Browse Source

Add unit tests

pull/7935/head
liangshiwei 5 years ago
parent
commit
2b9b56a75b
  1. 7
      modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/RoleDeletedEventHandler.cs
  2. 105
      modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/Distributed_Role_Change_Events_Test.cs
  3. 60
      modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/RoleChangingEvents_Test.cs

7
modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/RoleDeletedEventHandler.cs

@ -3,21 +3,22 @@ using Volo.Abp.Authorization.Permissions;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Domain.Entities.Events.Distributed;
using Volo.Abp.EventBus;
using Volo.Abp.EventBus.Distributed;
using Volo.Abp.Identity;
namespace Volo.Abp.PermissionManagement.Identity
{
public class RoleDeletedEventHandler :
ILocalEventHandler<EntityDeletedEto<IdentityRoleEto>>,
IDistributedEventHandler<EntityDeletedEto<IdentityRoleEto>>,
ITransientDependency
{
protected IPermissionManager PermissionManager { get; }
public RoleDeletedEventHandler(IPermissionManager permissionManager)
{
PermissionManager = permissionManager;
}
public async Task HandleEventAsync(EntityDeletedEto<IdentityRoleEto> eventData)
{
await PermissionManager.DeleteAsync(RolePermissionValueProvider.ProviderName, eventData.Entity.Name);

105
modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/Distributed_Role_Change_Events_Test.cs

@ -0,0 +1,105 @@
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Identity;
using Shouldly;
using System.Threading.Tasks;
using Microsoft.Extensions.Options;
using Volo.Abp.Caching;
using Volo.Abp.Domain.Entities.Events.Distributed;
using Volo.Abp.EventBus.Distributed;
using Volo.Abp.PermissionManagement;
using Volo.Abp.PermissionManagement.Identity;
using Volo.Abp.Uow;
using Xunit;
namespace Volo.Abp.Identity
{
public class Distributed_Role_Change_Events_Test : AbpIdentityDomainTestBase
{
protected readonly IIdentityRoleRepository RoleRepository;
protected readonly IPermissionGrantRepository PermissionGrantRepository;
protected readonly IdentityRoleManager RoleManager;
protected readonly ILookupNormalizer LookupNormalizer;
protected readonly IUnitOfWorkManager UowManager;
protected readonly IDistributedCache<PermissionGrantCacheItem> Cache;
public Distributed_Role_Change_Events_Test()
{
RoleRepository = GetRequiredService<IIdentityRoleRepository>();
;
PermissionGrantRepository = GetRequiredService<IPermissionGrantRepository>();
;
RoleManager = GetRequiredService<IdentityRoleManager>();
;
LookupNormalizer = GetRequiredService<ILookupNormalizer>();
;
UowManager = GetRequiredService<IUnitOfWorkManager>();
Cache = GetRequiredService<IDistributedCache<PermissionGrantCacheItem>>();
}
[Fact]
public void Should_Register_Handler()
{
var x = GetRequiredService<IOptions<AbpDistributedEntityEventOptions>>();
GetRequiredService<IOptions<AbpDistributedEntityEventOptions>>()
.Value
.AutoEventSelectors
.ShouldContain(m => m.Name == "Entity:" + typeof(IdentityRole).FullName);
GetRequiredService<IOptions<AbpDistributedEventBusOptions>>()
.Value
.Handlers
.ShouldContain(h => h == typeof(RoleUpdateEventHandler) || h == typeof(RoleDeletedEventHandler));
}
[Fact]
public async Task Role_Updated_Distributed_Event_Test()
{
var role = await RoleRepository.FindByNormalizedNameAsync(LookupNormalizer.NormalizeName("moderator"));
var permissionGrantsInRole = await PermissionGrantRepository.GetListAsync("R", role.Name);
permissionGrantsInRole.ShouldNotBeNull();
permissionGrantsInRole.Count.ShouldBeGreaterThan(0);
var count = permissionGrantsInRole.Count;
using (var uow = UowManager.Begin())
{
var identityResult = await RoleManager.SetRoleNameAsync(role, "TestModerator");
identityResult.Succeeded.ShouldBeTrue();
await RoleRepository.UpdateAsync(role);
await uow.CompleteAsync();
}
role = await RoleRepository.GetAsync(role.Id);
role.Name.ShouldBe("TestModerator");
permissionGrantsInRole = await PermissionGrantRepository.GetListAsync("R", role.Name);
permissionGrantsInRole.Count.ShouldBe(count);
}
[Fact]
public async Task Role_Deleted_Distributed_Event_Test()
{
var role = await RoleRepository.FindByNormalizedNameAsync(LookupNormalizer.NormalizeName("moderator"));
var permissionGrantsInRole = await PermissionGrantRepository.GetListAsync("R", role.Name);
var caches = permissionGrantsInRole.Select(x => new KeyValuePair<string, PermissionGrantCacheItem>(
PermissionGrantCacheItem.CalculateCacheKey(x.Name, x.ProviderName, x.ProviderKey),
new PermissionGrantCacheItem(true))).ToList();
await Cache.SetManyAsync(caches);
using (var uow = UowManager.Begin())
{
await RoleRepository.DeleteAsync(role);
await uow.CompleteAsync();
}
var permissionGrantCaches = await Cache.GetManyAsync(caches.Select(x=>x.Key));
foreach (var cache in permissionGrantCaches)
{
cache.Value.ShouldBeNull();
}
}
}
}

60
modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/RoleChangingEvents_Test.cs

@ -1,60 +0,0 @@
using Microsoft.AspNetCore.Identity;
using Shouldly;
using System.Threading.Tasks;
using Volo.Abp.EventBus.Distributed;
using Volo.Abp.Guids;
using Volo.Abp.PermissionManagement;
using Volo.Abp.Uow;
using Xunit;
namespace Volo.Abp.Identity
{
//TODO: This code can not be here!
//https://github.com/abpframework/abp/commit/847f526041145b62376b760776829d5ce257da1c
// public class RoleChangingEvents_Test : AbpIdentityDomainTestBase
// {
// protected readonly IIdentityRoleRepository RoleRepository;
// protected readonly IPermissionGrantRepository PermissionGrantRepository;
// protected readonly IdentityRoleManager RoleManager;
// protected readonly ILookupNormalizer LookupNormalizer;
// protected readonly IGuidGenerator GuidGenerator;
// protected readonly IUnitOfWorkManager UowManager;
//
// public RoleChangingEvents_Test()
// {
// RoleRepository = GetRequiredService<IIdentityRoleRepository>(); ;
// PermissionGrantRepository = GetRequiredService<IPermissionGrantRepository>(); ;
// RoleManager = GetRequiredService<IdentityRoleManager>(); ;
// LookupNormalizer = GetRequiredService<ILookupNormalizer>(); ;
// GuidGenerator = GetRequiredService<IGuidGenerator>();
// UowManager = GetRequiredService<IUnitOfWorkManager>();
// }
//
// [Fact(Skip = "https://github.com/abpframework/abp/actions/runs/454248191")]
// public async Task Role_Update_Event_Test()
// {
// var role = await RoleRepository
// .FindByNormalizedNameAsync(LookupNormalizer.NormalizeName("moderator"))
// ;
//
// var permissionGrantsInRole = await PermissionGrantRepository.GetListAsync("R", role.Name);
// permissionGrantsInRole.ShouldNotBeNull();
// permissionGrantsInRole.Count.ShouldBeGreaterThan(0);
// var count = permissionGrantsInRole.Count;
//
// using (var uow = UowManager.Begin())
// {
// var identityResult = await RoleManager.SetRoleNameAsync(role, "TestModerator");
// identityResult.Succeeded.ShouldBeTrue();
// var xx = await RoleRepository.UpdateAsync(role);
// await uow.CompleteAsync();
// }
//
// role = await RoleRepository.GetAsync(role.Id);
// role.Name.ShouldBe("TestModerator");
//
// permissionGrantsInRole = await PermissionGrantRepository.GetListAsync("R", role.Name);
// permissionGrantsInRole.Count.ShouldBe(count);
// }
// }
}
Loading…
Cancel
Save