diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Application.Tests/Volo/Abp/PermissionManagement/PermissionAppService_Tests.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.Application.Tests/Volo/Abp/PermissionManagement/PermissionAppService_Tests.cs index 4a2ced5e16..8b36b02877 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.Application.Tests/Volo/Abp/PermissionManagement/PermissionAppService_Tests.cs +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.Application.Tests/Volo/Abp/PermissionManagement/PermissionAppService_Tests.cs @@ -43,10 +43,10 @@ namespace Volo.Abp.PermissionManagement.Application.Tests.Volo.Abp.PermissionMan public async Task UpdateAsync() { (await _permissionGrantRepository.FindAsync("MyPermission1", "Test", - PermissionTestDataBuilder.User1Id.ToString())).ShouldBeNull(); + "Test")).ShouldBeNull(); await _permissionAppService.UpdateAsync("Test", - PermissionTestDataBuilder.User1Id.ToString(), new UpdatePermissionsDto() + "Test", new UpdatePermissionsDto() { Permissions = new UpdatePermissionDto[] { @@ -59,7 +59,7 @@ namespace Volo.Abp.PermissionManagement.Application.Tests.Volo.Abp.PermissionMan }); (await _permissionGrantRepository.FindAsync("MyPermission1", "Test", - PermissionTestDataBuilder.User1Id.ToString())).ShouldNotBeNull(); + "Test")).ShouldNotBeNull(); } [Fact] @@ -70,14 +70,14 @@ namespace Volo.Abp.PermissionManagement.Application.Tests.Volo.Abp.PermissionMan Guid.NewGuid(), "MyPermission1", "Test", - PermissionTestDataBuilder.User1Id.ToString() + "Test" ) ); (await _permissionGrantRepository.FindAsync("MyPermission1", "Test", - PermissionTestDataBuilder.User1Id.ToString())).ShouldNotBeNull(); + "Test")).ShouldNotBeNull(); await _permissionAppService.UpdateAsync("Test", - PermissionTestDataBuilder.User1Id.ToString(), new UpdatePermissionsDto() + "Test", new UpdatePermissionsDto() { Permissions = new UpdatePermissionDto[] { @@ -90,7 +90,7 @@ namespace Volo.Abp.PermissionManagement.Application.Tests.Volo.Abp.PermissionMan }); (await _permissionGrantRepository.FindAsync("MyPermission1", "Test", - PermissionTestDataBuilder.User1Id.ToString())).ShouldBeNull(); + "Test")).ShouldBeNull(); } } } diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.TestBase/Volo/Abp/PermissionManagement/AbpPermissionManagementTestBaseModule.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.TestBase/Volo/Abp/PermissionManagement/AbpPermissionManagementTestBaseModule.cs index 4423cf114b..ec343d9615 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.TestBase/Volo/Abp/PermissionManagement/AbpPermissionManagementTestBaseModule.cs +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.TestBase/Volo/Abp/PermissionManagement/AbpPermissionManagementTestBaseModule.cs @@ -12,6 +12,14 @@ namespace Volo.Abp.PermissionManagement )] public class AbpPermissionManagementTestBaseModule : AbpModule { + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.Configure(options => + { + options.ManagementProviders.Add(); + }); + } + public override void OnApplicationInitialization(ApplicationInitializationContext context) { SeedTestData(context); diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Tests/Volo/Abp/PermissionManagement/PermissionManager_Basic_Tests.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.Tests/Volo/Abp/PermissionManagement/PermissionChecker_Basic_Tests.cs similarity index 100% rename from modules/permission-management/test/Volo.Abp.PermissionManagement.Tests/Volo/Abp/PermissionManagement/PermissionManager_Basic_Tests.cs rename to modules/permission-management/test/Volo.Abp.PermissionManagement.Tests/Volo/Abp/PermissionManagement/PermissionChecker_Basic_Tests.cs diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Tests/Volo/Abp/PermissionManagement/PermissionDataSeeder_Tests.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.Tests/Volo/Abp/PermissionManagement/PermissionDataSeeder_Tests.cs new file mode 100644 index 0000000000..6868421a8a --- /dev/null +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.Tests/Volo/Abp/PermissionManagement/PermissionDataSeeder_Tests.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using Shouldly; +using Xunit; + +namespace Volo.Abp.PermissionManagement +{ + public class PermissionDataSeeder_Tests : PermissionTestBase + { + private readonly IPermissionDataSeeder _permissionDataSeeder; + private readonly IPermissionGrantRepository _grantpermissionGrantRepository; + + public PermissionDataSeeder_Tests() + { + _permissionDataSeeder = GetRequiredService(); + _grantpermissionGrantRepository = GetRequiredService(); + } + + [Fact] + public async Task SeedAsync() + { + (await _grantpermissionGrantRepository.FindAsync("MyPermission1", "Test", "Test")).ShouldBeNull(); + (await _grantpermissionGrantRepository.FindAsync("MyPermission2", "Test", "Test")).ShouldBeNull(); + + await _permissionDataSeeder.SeedAsync("Test", "Test", new List() + { + "MyPermission1", + "MyPermission2" + }); + + (await _grantpermissionGrantRepository.FindAsync("MyPermission1", "Test", "Test")).ShouldNotBeNull(); + (await _grantpermissionGrantRepository.FindAsync("MyPermission2", "Test", "Test")).ShouldNotBeNull(); + + } + } +} diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Tests/Volo/Abp/PermissionManagement/PermissionGrantCacheItemInvalidator_Tests.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.Tests/Volo/Abp/PermissionManagement/PermissionGrantCacheItemInvalidator_Tests.cs new file mode 100644 index 0000000000..9d4248bb5a --- /dev/null +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.Tests/Volo/Abp/PermissionManagement/PermissionGrantCacheItemInvalidator_Tests.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using Shouldly; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Caching; +using Volo.Abp.MultiTenancy; +using Xunit; + +namespace Volo.Abp.PermissionManagement +{ + public class PermissionGrantCacheItemInvalidator_Tests : PermissionTestBase + { + private readonly IDistributedCache _cache; + private readonly IPermissionStore _permissionStore; + private readonly IPermissionGrantRepository _permissionGrantRepository; + + public PermissionGrantCacheItemInvalidator_Tests() + { + _cache = GetRequiredService>(); + _permissionStore = GetRequiredService(); + _permissionGrantRepository = GetRequiredService(); + } + + [Fact] + public async Task PermissionStore_IsGrantedAsync_Should_Cache_PermissionGrant() + { + (await _cache.GetAsync(PermissionGrantCacheItem.CalculateCacheKey("MyPermission1", + UserPermissionValueProvider.ProviderName, + PermissionTestDataBuilder.User1Id.ToString()))).ShouldBeNull(); + + + await _permissionStore.IsGrantedAsync("MyPermission1", + UserPermissionValueProvider.ProviderName, + PermissionTestDataBuilder.User1Id.ToString()); + + + (await _cache.GetAsync(PermissionGrantCacheItem.CalculateCacheKey("MyPermission1", + UserPermissionValueProvider.ProviderName, + PermissionTestDataBuilder.User1Id.ToString()))).ShouldNotBeNull(); + } + + [Fact] + public async Task Cache_Should_Invalidator_WhenPermissionGrantChanged() + { + // IsGrantedAsync will cache PermissionGrant + await _permissionStore.IsGrantedAsync("MyPermission1", + UserPermissionValueProvider.ProviderName, + PermissionTestDataBuilder.User1Id.ToString()); + + var permissionGrant = await _permissionGrantRepository.FindAsync("MyPermission1", + UserPermissionValueProvider.ProviderName, + PermissionTestDataBuilder.User1Id.ToString()); + permissionGrant.ShouldNotBeNull(); + await _permissionGrantRepository.DeleteAsync(permissionGrant); + + (await _cache.GetAsync(PermissionGrantCacheItem.CalculateCacheKey("MyPermission1", + UserPermissionValueProvider.ProviderName, + PermissionTestDataBuilder.User1Id.ToString()))).ShouldBeNull(); + } + } +} diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Tests/Volo/Abp/PermissionManagement/PermissionManagementProvider_Tests.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.Tests/Volo/Abp/PermissionManagement/PermissionManagementProvider_Tests.cs new file mode 100644 index 0000000000..d1e249c29a --- /dev/null +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.Tests/Volo/Abp/PermissionManagement/PermissionManagementProvider_Tests.cs @@ -0,0 +1,79 @@ +using System; +using System.Threading.Tasks; +using Shouldly; +using Volo.Abp.Authorization.Permissions; +using Xunit; + +namespace Volo.Abp.PermissionManagement +{ + public class PermissionManagementProvider_Tests : PermissionTestBase + { + private readonly IPermissionManagementProvider _permissionManagementProvider; + private readonly IPermissionGrantRepository _permissionGrantRepository; + + + public PermissionManagementProvider_Tests() + { + _permissionManagementProvider = GetRequiredService(); + _permissionGrantRepository = GetRequiredService(); + } + + + [Fact] + public async Task CheckAsync() + { + _permissionGrantRepository.Insert( + new PermissionGrant( + Guid.NewGuid(), + "MyPermission1", + "Test", + "Test" + ) + ); + + var permissionValueProviderGrantInfo = await _permissionManagementProvider.CheckAsync("MyPermission1", + "Test", + "Test"); + + permissionValueProviderGrantInfo.IsGranted.ShouldBeTrue(); + permissionValueProviderGrantInfo.ProviderKey.ShouldBe("Test"); + } + + [Fact] + public async Task Check_Should_Return_NonGranted_When_ProviderName_NotEquals_Name() + { + var permissionValueProviderGrantInfo = await _permissionManagementProvider.CheckAsync("MyPermission1", + "TestNotExist", + "Test"); + + permissionValueProviderGrantInfo.IsGranted.ShouldBeFalse(); + permissionValueProviderGrantInfo.ProviderKey.ShouldBeNull(); + } + + + [Fact] + public async Task SetAsync() + { + _permissionGrantRepository.Insert( + new PermissionGrant( + Guid.NewGuid(), + "MyPermission1", + "Test", + "Test" + ) + ); + (await _permissionGrantRepository.FindAsync("MyPermission1", + "Test", + "Test")).ShouldNotBeNull(); + + await _permissionManagementProvider.SetAsync("MyPermission1", + "Test", + false); + + (await _permissionGrantRepository.FindAsync("MyPermission1", + "Test", + "Test")).ShouldBeNull(); + } + + } +} diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Tests/Volo/Abp/PermissionManagement/PermissionManager_Tests.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.Tests/Volo/Abp/PermissionManagement/PermissionManager_Tests.cs new file mode 100644 index 0000000000..b5fe647c89 --- /dev/null +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.Tests/Volo/Abp/PermissionManagement/PermissionManager_Tests.cs @@ -0,0 +1,108 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Shouldly; +using Volo.Abp.Authorization.Permissions; +using Xunit; + +namespace Volo.Abp.PermissionManagement +{ + public class PermissionManager_Tests : PermissionTestBase + { + private readonly IPermissionManager _permissionManager; + private readonly IPermissionGrantRepository _permissionGrantRepository; + + public PermissionManager_Tests() + { + _permissionManager = GetRequiredService(); + _permissionGrantRepository = GetRequiredService(); + } + + [Fact] + public async Task GetAsync() + { + await _permissionGrantRepository.InsertAsync(new PermissionGrant( + Guid.NewGuid(), + "MyPermission1", + "Test", + "Test") + ); + + var grantedProviders = await _permissionManager.GetAsync("MyPermission1", + "Test", + "Test"); + + grantedProviders.ShouldNotBeNull(); + grantedProviders.IsGranted.ShouldBeTrue(); + grantedProviders.Name.ShouldBe("MyPermission1"); + grantedProviders.Providers.ShouldContain(x => x.Key == "Test"); + } + + [Fact] + public async Task Get_Should_Exception_When_Permission_Undefined() + { + await Assert.ThrowsAsync(async () => await _permissionManager.GetAsync( + "MyPermission1NotExist", + "Test", + "Test")); + } + + [Fact] + public async Task GetAllAsync() + { + await _permissionGrantRepository.InsertAsync(new PermissionGrant( + Guid.NewGuid(), + "MyPermission1", + "Test", + "Test") + ); + + await _permissionGrantRepository.InsertAsync(new PermissionGrant( + Guid.NewGuid(), + "MyPermission2", + "Test", + "Test") + ); + + var permissionWithGrantedProviders = await _permissionManager.GetAllAsync( + "Test", + "Test"); + + permissionWithGrantedProviders.ShouldNotBeNull(); + permissionWithGrantedProviders.ShouldContain(x => + x.IsGranted && x.Name == "MyPermission1" && x.Providers.Any(p => p.Key == "Test")); + permissionWithGrantedProviders.ShouldContain(x => + x.IsGranted && x.Name == "MyPermission2" && x.Providers.Any(p => p.Key == "Test")); + } + + [Fact] + public async Task SetAsync() + { + (await _permissionGrantRepository.FindAsync("MyPermission2", + "Test", + "Test")).ShouldBeNull(); + + await _permissionManager.SetAsync( + "MyPermission2", + "Test", + "Test", true); + + (await _permissionGrantRepository.FindAsync("MyPermission2", + "Test", + "Test")).ShouldNotBeNull(); + } + + [Fact] + public async Task Set_Should_Exception_When_Permission_Undefined() + { + await Assert.ThrowsAsync(async () => await _permissionManager.SetAsync( + "MyPermission1NotExist", + "Test", + "Test", + true)); + } + + } +} diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Tests/Volo/Abp/PermissionManagement/PermissionStore_Tests.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.Tests/Volo/Abp/PermissionManagement/PermissionStore_Tests.cs new file mode 100644 index 0000000000..965899ede9 --- /dev/null +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.Tests/Volo/Abp/PermissionManagement/PermissionStore_Tests.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using Shouldly; +using Volo.Abp.Authorization.Permissions; +using Xunit; + +namespace Volo.Abp.PermissionManagement +{ + public class PermissionStore_Tests : PermissionTestBase + { + private readonly IPermissionStore _permissionStore; + + public PermissionStore_Tests() + { + _permissionStore = GetRequiredService(); + } + + [Fact] + public async Task IsGrantedAsync() + { + (await _permissionStore.IsGrantedAsync("MyPermission1", + UserPermissionValueProvider.ProviderName, + PermissionTestDataBuilder.User1Id.ToString())).ShouldBeTrue(); + + + (await _permissionStore.IsGrantedAsync("MyPermission1NotExist", + UserPermissionValueProvider.ProviderName, + PermissionTestDataBuilder.User1Id.ToString())).ShouldBeFalse(); + + } + } +}