You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
abp/test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/PermissionManager_Tests.cs

85 lines
3.5 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Shouldly;
using Volo.Abp.Permissions;
using Volo.Abp.Session;
using Xunit;
namespace Volo.Abp.Identity
{
public class PermissionManager_Tests : AbpIdentityDomainTestBase
{
private readonly IPermissionManager _permissionManager;
public PermissionManager_Tests()
{
_permissionManager = GetRequiredService<IPermissionManager>();
}
[Fact]
public async Task Roles_Should_Have_Configured_Permissions()
{
//admin
var grantInfos = await _permissionManager.GetAllForRoleAsync("admin");
RoleShouldHavePermission(grantInfos, "admin", TestPermissionNames.MyPermission1);
RoleShouldHavePermission(grantInfos, "admin", TestPermissionNames.MyPermission2);
RoleShouldHavePermission(grantInfos, "admin", TestPermissionNames.MyPermission2_ChildPermission1);
//moderator
grantInfos = await _permissionManager.GetAllForRoleAsync("moderator");
RoleShouldHavePermission(grantInfos, "moderator", TestPermissionNames.MyPermission1);
RoleShouldHavePermission(grantInfos, "moderator", TestPermissionNames.MyPermission2);
ShouldNotHavePermission(grantInfos, TestPermissionNames.MyPermission2_ChildPermission1);
//supporter
grantInfos = await _permissionManager.GetAllForRoleAsync("supporter");
RoleShouldHavePermission(grantInfos, "supporter", TestPermissionNames.MyPermission1);
ShouldNotHavePermission(grantInfos, TestPermissionNames.MyPermission2);
ShouldNotHavePermission(grantInfos, TestPermissionNames.MyPermission2_ChildPermission1);
}
[Fact]
public async Task User_Should_Have_Configured_Values()
{
//administrator
var user = GetUserAsync("administrator");
var grantInfos = await _permissionManager.GetAllForUserAsync(user.Id);
UserShouldHavePermission(grantInfos, user.Id, TestPermissionNames.MyPermission1, "admin");
UserShouldHavePermission(grantInfos, user.Id, TestPermissionNames.MyPermission2, "admin");
UserShouldHavePermission(grantInfos, user.Id, TestPermissionNames.MyPermission2_ChildPermission1, "admin");
}
private static void RoleShouldHavePermission(List<PermissionWithGrantedProviders> grantInfos, string roleName, string permissionName)
{
grantInfos.ShouldContain(
p => p.Name == permissionName &&
p.IsGranted &&
p.Providers.Count == 1 &&
p.Providers.Any(
pr => pr.Name == RolePermissionValueProvider.ProviderName &&
pr.Key == roleName
)
);
}
private static void ShouldNotHavePermission(List<PermissionWithGrantedProviders> grantInfos, string permissionName)
{
grantInfos.ShouldContain(
p => p.Name == permissionName &&
!p.IsGranted &&
p.Providers.Count == 0
);
}
private static void UserShouldHavePermission(List<PermissionWithGrantedProviders> grantInfos, Guid userId, string permissionName, params string[] inheritedRolesForThisPermission)
{
grantInfos.ShouldContain(
p => p.Name == permissionName &&
p.IsGranted
);
}
}
}