mirror of https://github.com/abpframework/abp.git
2 changed files with 149 additions and 0 deletions
@ -0,0 +1,28 @@ |
|||
using System.Threading.Tasks; |
|||
using Shouldly; |
|||
using Volo.Abp.Authorization.Permissions.Resources; |
|||
using Xunit; |
|||
|
|||
namespace Volo.Abp.PermissionManagement; |
|||
|
|||
public class ResourcePermissionChecker_Basic_Tests : PermissionTestBase |
|||
{ |
|||
private readonly IResourcePermissionChecker _resourcePermissionChecker; |
|||
|
|||
public ResourcePermissionChecker_Basic_Tests() |
|||
{ |
|||
_resourcePermissionChecker = GetRequiredService<IResourcePermissionChecker>(); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task Should_Return_Prohibited_If_Permission_Is_Not_Defined() |
|||
{ |
|||
(await _resourcePermissionChecker.IsGrantedAsync(TestEntityResource.ResourceName, TestEntityResource.ResourceKey1,"UndefinedResourcePermissionName")).ShouldBeFalse(); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task Should_Return_False_As_Default_For_Any_Permission() |
|||
{ |
|||
(await _resourcePermissionChecker.IsGrantedAsync(TestEntityResource.ResourceName, TestEntityResource.ResourceKey1,"MyPermission1")).ShouldBeFalse(); |
|||
} |
|||
} |
|||
@ -0,0 +1,121 @@ |
|||
using System; |
|||
using System.Security.Claims; |
|||
using System.Threading.Tasks; |
|||
using Shouldly; |
|||
using Volo.Abp.Authorization.Permissions; |
|||
using Volo.Abp.Authorization.Permissions.Resources; |
|||
using Volo.Abp.Security.Claims; |
|||
using Xunit; |
|||
|
|||
namespace Volo.Abp.PermissionManagement; |
|||
|
|||
public class ResourcePermissionChecker_User_Tests : PermissionTestBase |
|||
{ |
|||
private readonly IResourcePermissionChecker _resourcePermissionChecker; |
|||
private readonly ICurrentPrincipalAccessor _currentPrincipalAccessor; |
|||
|
|||
public ResourcePermissionChecker_User_Tests() |
|||
{ |
|||
_resourcePermissionChecker = GetRequiredService<IResourcePermissionChecker>(); |
|||
_currentPrincipalAccessor = GetRequiredService<ICurrentPrincipalAccessor>(); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task Should_Return_True_For_Granted_Current_User() |
|||
{ |
|||
(await _resourcePermissionChecker.IsGrantedAsync( |
|||
CreatePrincipal(PermissionTestDataBuilder.User1Id), |
|||
"MyResourcePermission1", |
|||
TestEntityResource.ResourceName, |
|||
TestEntityResource.ResourceKey1 |
|||
)).ShouldBeTrue(); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task Should_Return_False_For_Non_Granted_Current_User() |
|||
{ |
|||
(await _resourcePermissionChecker.IsGrantedAsync( |
|||
CreatePrincipal(PermissionTestDataBuilder.User2Id), |
|||
"MyResourcePermission1", |
|||
TestEntityResource.ResourceName, |
|||
TestEntityResource.ResourceKey1 |
|||
)).ShouldBeFalse(); |
|||
} |
|||
|
|||
|
|||
[Fact] |
|||
public async Task Should_Return_False_For_Granted_Current_User_If_The_Permission_Is_Disabled() |
|||
{ |
|||
//Disabled permissions always returns false!
|
|||
(await _resourcePermissionChecker.IsGrantedAsync( |
|||
CreatePrincipal(PermissionTestDataBuilder.User1Id), |
|||
"MyDisabledPermission1", |
|||
TestEntityResource.ResourceName, |
|||
TestEntityResource.ResourceKey1 |
|||
)).ShouldBeFalse(); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task Should_Return_False_For_Current_User_If_Anonymous() |
|||
{ |
|||
(await _resourcePermissionChecker.IsGrantedAsync( |
|||
CreatePrincipal(null), |
|||
"MyResourcePermission1", |
|||
TestEntityResource.ResourceName, |
|||
TestEntityResource.ResourceKey1 |
|||
)).ShouldBeFalse(); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task Should_Not_Allow_Host_Permission_To_Tenant_User_Even_Granted_Before() |
|||
{ |
|||
(await _resourcePermissionChecker.IsGrantedAsync( |
|||
CreatePrincipal(PermissionTestDataBuilder.User1Id, Guid.NewGuid()), |
|||
"MyResourcePermission3", |
|||
TestEntityResource.ResourceName, |
|||
TestEntityResource.ResourceKey3 |
|||
)).ShouldBeFalse(); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task Should_Return_False_For_Granted_Current_User_If_The_Permission_State_Is_Disabled() |
|||
{ |
|||
(await _resourcePermissionChecker.IsGrantedAsync( |
|||
CreatePrincipal(PermissionTestDataBuilder.User1Id, Guid.NewGuid()), |
|||
"MyResourcePermission5", |
|||
TestEntityResource.ResourceName, |
|||
TestEntityResource.ResourceKey5 |
|||
)).ShouldBeFalse(); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task Should_Return_True_For_Granted_Current_User_If_The_Permission_State_Is_Enabled() |
|||
{ |
|||
using (_currentPrincipalAccessor.Change(new Claim(AbpClaimTypes.Role, "super-admin"))) |
|||
{ |
|||
(await _resourcePermissionChecker.IsGrantedAsync( |
|||
CreatePrincipal(PermissionTestDataBuilder.User1Id, Guid.NewGuid()), |
|||
"MyResourcePermission5", |
|||
TestEntityResource.ResourceName, |
|||
TestEntityResource.ResourceKey5 |
|||
)).ShouldBeTrue(); |
|||
} |
|||
} |
|||
|
|||
private static ClaimsPrincipal CreatePrincipal(Guid? userId, Guid? tenantId = null) |
|||
{ |
|||
var claimsIdentity = new ClaimsIdentity(); |
|||
|
|||
if (userId != null) |
|||
{ |
|||
claimsIdentity.AddClaim(new Claim(AbpClaimTypes.UserId, userId.ToString())); |
|||
} |
|||
|
|||
if (tenantId != null) |
|||
{ |
|||
claimsIdentity.AddClaim(new Claim(AbpClaimTypes.TenantId, tenantId.ToString())); |
|||
} |
|||
|
|||
return new ClaimsPrincipal(claimsIdentity); |
|||
} |
|||
} |
|||
Loading…
Reference in new issue