From 79a89b8998ff84af0a28c042963c09b8c3397b37 Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 9 Sep 2022 09:59:23 +0800 Subject: [PATCH] Add unit tests to `PermissionManagement`. --- .../AbpFeatureManagementDomainModule.cs | 5 ++++ .../AbpPermissionManagementDomainModule.cs | 19 ++++++++----- ...missionDefinitionRecordRepository_Tests.cs | 27 +++++++++++++++++++ .../StaticPermissionSaver_Tests.cs | 13 +++++++++ ...anagement.EntityFrameworkCore.Tests.csproj | 1 + ...missionDefinitionRecordRepository_Tests.cs | 6 +++++ ....PermissionManagement.MongoDB.Tests.csproj | 1 + ...missionDefinitionRecordRepository_Tests.cs | 9 +++++++ 8 files changed, 74 insertions(+), 7 deletions(-) create mode 100644 modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDefinitionRecordRepository_Tests.cs create mode 100644 modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/StaticPermissionSaver_Tests.cs create mode 100644 modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo/Abp/PermissionManagement/EntityFrameworkCore/EFCorePermissionDefinitionRecordRepository_Tests.cs create mode 100644 modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/MongoDbPermissionDefinitionRecordRepository_Tests.cs diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs index ef73adc460..74cd00cffb 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs @@ -43,6 +43,11 @@ public class AbpFeatureManagementDomainModule : AbpModule private readonly CancellationTokenSource _cancellationTokenSource = new(); + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + AsyncHelper.RunSync(() => OnApplicationInitializationAsync(context)); + } + public override Task OnApplicationInitializationAsync(ApplicationInitializationContext context) { InitializeDynamicFeatures(context); diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainModule.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainModule.cs index 1e05590176..ddf5be479e 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainModule.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainModule.cs @@ -25,7 +25,12 @@ namespace Volo.Abp.PermissionManagement; public class AbpPermissionManagementDomainModule : AbpModule { private readonly CancellationTokenSource _cancellationTokenSource = new(); - + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + AsyncHelper.RunSync(() => OnApplicationInitializationAsync(context)); + } + public override Task OnApplicationInitializationAsync(ApplicationInitializationContext context) { InitializeDynamicPermissions(context); @@ -44,12 +49,12 @@ public class AbpPermissionManagementDomainModule : AbpModule .ServiceProvider .GetRequiredService>() .Value; - + if (!options.SaveStaticPermissionsToDatabase && !options.IsDynamicPermissionStoreEnabled) { return; } - + var rootServiceProvider = context.ServiceProvider.GetRequiredService(); Task.Run(async () => @@ -58,7 +63,7 @@ public class AbpPermissionManagementDomainModule : AbpModule var applicationLifetime = scope.ServiceProvider.GetService(); var cancellationTokenProvider = scope.ServiceProvider.GetRequiredService(); var cancellationToken = applicationLifetime?.ApplicationStopping ?? _cancellationTokenSource.Token; - + try { using (cancellationTokenProvider.Use(cancellationToken)) @@ -67,7 +72,7 @@ public class AbpPermissionManagementDomainModule : AbpModule { return; } - + await SaveStaticPermissionsToDatabaseAsync(options, scope, cancellationTokenProvider); if (cancellationTokenProvider.Token.IsCancellationRequested) @@ -127,7 +132,7 @@ public class AbpPermissionManagementDomainModule : AbpModule try { - // Pre-cache permissions, so first request doesn't wait + // Pre-cache permissions, so first request doesn't wait await scope .ServiceProvider .GetRequiredService() @@ -144,4 +149,4 @@ public class AbpPermissionManagementDomainModule : AbpModule throw; // It will be cached in InitializeDynamicPermissions } } -} \ No newline at end of file +} diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDefinitionRecordRepository_Tests.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDefinitionRecordRepository_Tests.cs new file mode 100644 index 0000000000..20f9f7e21f --- /dev/null +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDefinitionRecordRepository_Tests.cs @@ -0,0 +1,27 @@ +using System.Threading.Tasks; +using Shouldly; +using Xunit; + +namespace Volo.Abp.PermissionManagement; + +public abstract class PermissionDefinitionRecordRepository_Tests : PermissionTestBase +{ + protected IPermissionDefinitionRecordRepository PermissionDefinitionRecordRepository { get; set; } + + protected PermissionDefinitionRecordRepository_Tests() + { + PermissionDefinitionRecordRepository = GetRequiredService(); + } + + [Fact] + public async Task FindByNameAsync() + { + var permission = await PermissionDefinitionRecordRepository.FindByNameAsync("MyPermission1"); + permission.ShouldNotBeNull(); + permission.Name.ShouldBe("MyPermission1"); + + permission = await PermissionDefinitionRecordRepository.FindByNameAsync("MyPermission2"); + permission.ShouldNotBeNull(); + permission.Name.ShouldBe("MyPermission2"); + } +} diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/StaticPermissionSaver_Tests.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/StaticPermissionSaver_Tests.cs new file mode 100644 index 0000000000..28fa57b034 --- /dev/null +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/StaticPermissionSaver_Tests.cs @@ -0,0 +1,13 @@ +namespace Volo.Abp.PermissionManagement; + +public class StaticPermissionSaver_Tests : PermissionTestBase +{ + private readonly IStaticPermissionSaver _saver; + + public StaticPermissionSaver_Tests() + { + _saver = GetRequiredService(); + } + + +} diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests.csproj b/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests.csproj index 034ee303da..2caab81eb6 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests.csproj +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests.csproj @@ -13,6 +13,7 @@ + diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo/Abp/PermissionManagement/EntityFrameworkCore/EFCorePermissionDefinitionRecordRepository_Tests.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo/Abp/PermissionManagement/EntityFrameworkCore/EFCorePermissionDefinitionRecordRepository_Tests.cs new file mode 100644 index 0000000000..5429d2e772 --- /dev/null +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo/Abp/PermissionManagement/EntityFrameworkCore/EFCorePermissionDefinitionRecordRepository_Tests.cs @@ -0,0 +1,6 @@ +namespace Volo.Abp.PermissionManagement.EntityFrameworkCore; + +public class EFCorePermissionDefinitionRecordRepository_Tests : PermissionDefinitionRecordRepository_Tests +{ + +} diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo.Abp.PermissionManagement.MongoDB.Tests.csproj b/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo.Abp.PermissionManagement.MongoDB.Tests.csproj index 93b14e484f..9a23915ee8 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo.Abp.PermissionManagement.MongoDB.Tests.csproj +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo.Abp.PermissionManagement.MongoDB.Tests.csproj @@ -13,6 +13,7 @@ + diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/MongoDbPermissionDefinitionRecordRepository_Tests.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/MongoDbPermissionDefinitionRecordRepository_Tests.cs new file mode 100644 index 0000000000..d43634cdb9 --- /dev/null +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.MongoDB.Tests/Volo/Abp/PermissionManagement/MongoDb/MongoDbPermissionDefinitionRecordRepository_Tests.cs @@ -0,0 +1,9 @@ +using Xunit; + +namespace Volo.Abp.PermissionManagement.MongoDB; + +[Collection(MongoTestCollection.Name)] +public class MongoDbPermissionDefinitionRecordRepository_Tests : PermissionGrantRepository_Tests +{ + +}