From 075702507d53a22e4178f7b2ddc89b8e920812b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sun, 11 Feb 2018 21:20:44 +0300 Subject: [PATCH] Added tests for permission manager. --- .../Volo/Abp/Permissions/PermissionManager.cs | 3 ++ .../Permissions/AbpPermissionTestModule.cs | 2 +- .../PermissionManager_Basic_Tests.cs | 2 +- .../PermissionManager_User_Tests.cs | 54 +++++++++++++++++-- ...ssionTestBase.cs => PermissionTestBase.cs} | 4 +- ...uilder.cs => PermissionTestDataBuilder.cs} | 4 +- .../Abp/Settings/AbpSettingsTestModule.cs | 2 +- .../Settings/SettingManager_Basic_Tests.cs | 2 +- .../Abp/Settings/SettingManager_User_Tests.cs | 46 ++++++++-------- ...taBuilder.cs => SettingTestDataBuilder.cs} | 4 +- ...ettingsTestBase.cs => SettingsTestBase.cs} | 4 +- 11 files changed, 87 insertions(+), 40 deletions(-) rename test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/{AbpPermissionTestBase.cs => PermissionTestBase.cs} (88%) rename test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/{AbpPermissionTestDataBuilder.cs => PermissionTestDataBuilder.cs} (82%) rename test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/{AbpSettingTestDataBuilder.cs => SettingTestDataBuilder.cs} (89%) rename test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/{AbpSettingsTestBase.cs => SettingsTestBase.cs} (88%) diff --git a/src/Volo.Abp.Permissions/Volo/Abp/Permissions/PermissionManager.cs b/src/Volo.Abp.Permissions/Volo/Abp/Permissions/PermissionManager.cs index 61854ac080..96c93d5364 100644 --- a/src/Volo.Abp.Permissions/Volo/Abp/Permissions/PermissionManager.cs +++ b/src/Volo.Abp.Permissions/Volo/Abp/Permissions/PermissionManager.cs @@ -80,6 +80,9 @@ namespace Volo.Abp.Permissions return false; } + //TODO: Should also return for non-granted permissions! + //TODO: Create a method for getting only granted permissions! + public virtual async Task> GetAllAsync() { var permissionGrantInfos = new Dictionary(); diff --git a/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/AbpPermissionTestModule.cs b/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/AbpPermissionTestModule.cs index 99a336fc7e..05225cb57b 100644 --- a/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/AbpPermissionTestModule.cs +++ b/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/AbpPermissionTestModule.cs @@ -53,7 +53,7 @@ namespace Volo.Abp.Permissions using (var scope = context.ServiceProvider.CreateScope()) { scope.ServiceProvider - .GetRequiredService() + .GetRequiredService() .Build(); } } diff --git a/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionManager_Basic_Tests.cs b/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionManager_Basic_Tests.cs index 3095ddf911..9c28d09840 100644 --- a/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionManager_Basic_Tests.cs +++ b/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionManager_Basic_Tests.cs @@ -4,7 +4,7 @@ using Xunit; namespace Volo.Abp.Permissions { - public class PermissionManager_Basic_Tests : AbpPermissionTestBase + public class PermissionManager_Basic_Tests : PermissionTestBase { private readonly IPermissionManager _permissionManager; diff --git a/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionManager_User_Tests.cs b/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionManager_User_Tests.cs index 1174b65f36..a7731f49dc 100644 --- a/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionManager_User_Tests.cs +++ b/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionManager_User_Tests.cs @@ -8,7 +8,7 @@ using Xunit; namespace Volo.Abp.Permissions { - public class PermissionManager_User_Tests : AbpPermissionTestBase + public class PermissionManager_User_Tests : PermissionTestBase { private readonly IPermissionManager _permissionManager; @@ -31,14 +31,14 @@ namespace Volo.Abp.Permissions { (await _permissionManager.IsGrantedForUserAsync( "MyPermission1", - AbpPermissionTestDataBuilder.User1Id + PermissionTestDataBuilder.User1Id )).ShouldBeTrue(); } [Fact] public async Task Should_Return_True_For_Granted_Current_User() { - _currentUserId = AbpPermissionTestDataBuilder.User1Id; + _currentUserId = PermissionTestDataBuilder.User1Id; (await _permissionManager.IsGrantedForCurrentUserAsync( "MyPermission1" @@ -50,14 +50,14 @@ namespace Volo.Abp.Permissions { (await _permissionManager.IsGrantedForUserAsync( "MyPermission1", - AbpPermissionTestDataBuilder.User2Id + PermissionTestDataBuilder.User2Id )).ShouldBeFalse(); } [Fact] public async Task Should_Return_False_For_Non_Granted_Current_User() { - _currentUserId = AbpPermissionTestDataBuilder.User2Id; + _currentUserId = PermissionTestDataBuilder.User2Id; (await _permissionManager.IsGrantedForCurrentUserAsync( "MyPermission1" @@ -71,5 +71,49 @@ namespace Volo.Abp.Permissions "MyPermission1" )).ShouldBeFalse(); } + + [Fact] + public async Task Should_Get_List_Of_Granted_Permissions_For_A_User() + { + //User1 + var permission = await _permissionManager.GetAllForUserAsync(PermissionTestDataBuilder.User1Id); + permission.Count.ShouldBeGreaterThan(0); + permission.ShouldContain(p => p.Name == "MyPermission1" && p.IsGranted); + + //User2 + permission = await _permissionManager.GetAllForUserAsync(PermissionTestDataBuilder.User2Id); + permission.Count.ShouldBe(0); + } + + [Fact] + public async Task Should_Get_List_Of_Granted_Permissions_For_Current_User() + { + //User1 + _currentUserId = PermissionTestDataBuilder.User1Id; + var permission = await _permissionManager.GetAllForCurrentUserAsync(); + permission.Count.ShouldBeGreaterThan(0); + permission.ShouldContain(p => p.Name == "MyPermission1" && p.IsGranted); + + //User2 + _currentUserId = PermissionTestDataBuilder.User2Id; + permission = await _permissionManager.GetAllForCurrentUserAsync(); + permission.Count.ShouldBe(0); + } + + [Fact] + public async Task Should_Grant_Permission_For_A_User() + { + (await _permissionManager.IsGrantedForUserAsync( + "MyPermission1", + PermissionTestDataBuilder.User2Id + )).ShouldBeFalse(); + + await _permissionManager.SetForUserAsync(PermissionTestDataBuilder.User2Id, "MyPermission1", true); + + (await _permissionManager.IsGrantedForUserAsync( + "MyPermission1", + PermissionTestDataBuilder.User2Id + )).ShouldBeTrue(); + } } } diff --git a/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/AbpPermissionTestBase.cs b/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionTestBase.cs similarity index 88% rename from test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/AbpPermissionTestBase.cs rename to test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionTestBase.cs index d6c5ea2d4f..6a97483cf9 100644 --- a/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/AbpPermissionTestBase.cs +++ b/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionTestBase.cs @@ -7,7 +7,7 @@ using Volo.Abp.TestBase; namespace Volo.Abp.Permissions { - public class AbpPermissionTestBase : AbpIntegratedTest + public class PermissionTestBase : AbpIntegratedTest { protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options) { @@ -36,7 +36,7 @@ namespace Volo.Abp.Permissions context.PermissionGrants.Where( s => s.ProviderName == UserSettingValueProvider.ProviderName && - s.ProviderKey == AbpPermissionTestDataBuilder.User1Id.ToString() && + s.ProviderKey == PermissionTestDataBuilder.User1Id.ToString() && s.Name == "MySetting2" ).ToList() ); diff --git a/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/AbpPermissionTestDataBuilder.cs b/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionTestDataBuilder.cs similarity index 82% rename from test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/AbpPermissionTestDataBuilder.cs rename to test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionTestDataBuilder.cs index 6eba78d9b7..a3b6889825 100644 --- a/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/AbpPermissionTestDataBuilder.cs +++ b/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionTestDataBuilder.cs @@ -5,7 +5,7 @@ using Volo.Abp.Session; namespace Volo.Abp.Permissions { - public class AbpPermissionTestDataBuilder : ITransientDependency + public class PermissionTestDataBuilder : ITransientDependency { public static Guid User1Id { get; } = Guid.NewGuid(); public static Guid User2Id { get; } = Guid.NewGuid(); @@ -13,7 +13,7 @@ namespace Volo.Abp.Permissions private readonly IPermissionGrantRepository _permissionGrantRepository; private readonly IGuidGenerator _guidGenerator; - public AbpPermissionTestDataBuilder(IGuidGenerator guidGenerator, IPermissionGrantRepository permissionGrantRepository) + public PermissionTestDataBuilder(IGuidGenerator guidGenerator, IPermissionGrantRepository permissionGrantRepository) { _guidGenerator = guidGenerator; _permissionGrantRepository = permissionGrantRepository; diff --git a/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpSettingsTestModule.cs b/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpSettingsTestModule.cs index 89bfa03ee3..19f0bd3878 100644 --- a/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpSettingsTestModule.cs +++ b/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpSettingsTestModule.cs @@ -53,7 +53,7 @@ namespace Volo.Abp.Settings using (var scope = context.ServiceProvider.CreateScope()) { scope.ServiceProvider - .GetRequiredService() + .GetRequiredService() .Build(); } } diff --git a/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingManager_Basic_Tests.cs b/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingManager_Basic_Tests.cs index 7ac6205346..f874e3e878 100644 --- a/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingManager_Basic_Tests.cs +++ b/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingManager_Basic_Tests.cs @@ -4,7 +4,7 @@ using Xunit; namespace Volo.Abp.Settings { - public class SettingManager_Basic_Tests : AbpSettingsTestBase + public class SettingManager_Basic_Tests : SettingsTestBase { private readonly ISettingManager _settingManager; diff --git a/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingManager_User_Tests.cs b/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingManager_User_Tests.cs index 7601c82d97..f861bddad6 100644 --- a/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingManager_User_Tests.cs +++ b/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingManager_User_Tests.cs @@ -9,7 +9,7 @@ using Xunit; namespace Volo.Abp.Settings { - public class SettingManager_User_Tests: AbpSettingsTestBase + public class SettingManager_User_Tests: SettingsTestBase { private Guid? _currentUserId; @@ -30,8 +30,8 @@ namespace Volo.Abp.Settings [Fact] public async Task Should_Get_From_Store_For_Given_User() { - (await _settingManager.GetOrNullForUserAsync("MySetting2", AbpSettingTestDataBuilder.User1Id)).ShouldBe("user1-store-value"); - (await _settingManager.GetOrNullForUserAsync("MySetting2", AbpSettingTestDataBuilder.User2Id)).ShouldBe("user2-store-value"); + (await _settingManager.GetOrNullForUserAsync("MySetting2", SettingTestDataBuilder.User1Id)).ShouldBe("user1-store-value"); + (await _settingManager.GetOrNullForUserAsync("MySetting2", SettingTestDataBuilder.User2Id)).ShouldBe("user2-store-value"); } [Fact] @@ -49,10 +49,10 @@ namespace Volo.Abp.Settings [Fact] public async Task Should_Get_From_Store_For_Current_User() { - _currentUserId = AbpSettingTestDataBuilder.User1Id; + _currentUserId = SettingTestDataBuilder.User1Id; (await _settingManager.GetOrNullAsync("MySetting2")).ShouldBe("user1-store-value"); - _currentUserId = AbpSettingTestDataBuilder.User2Id; + _currentUserId = SettingTestDataBuilder.User2Id; (await _settingManager.GetOrNullAsync("MySetting2")).ShouldBe("user2-store-value"); } @@ -66,10 +66,10 @@ namespace Volo.Abp.Settings [Fact] public async Task Should_Get_From_Store_For_Current_User_With_GetOrNullForCurrentUserAsync() { - _currentUserId = AbpSettingTestDataBuilder.User1Id; + _currentUserId = SettingTestDataBuilder.User1Id; (await _settingManager.GetOrNullForCurrentUserAsync("MySetting2")).ShouldBe("user1-store-value"); - _currentUserId = AbpSettingTestDataBuilder.User2Id; + _currentUserId = SettingTestDataBuilder.User2Id; (await _settingManager.GetOrNullForCurrentUserAsync("MySetting2")).ShouldBe("user2-store-value"); } @@ -90,7 +90,7 @@ namespace Volo.Abp.Settings [Fact] public async Task Should_Get_All_From_Store_For_Given_User() { - var settingValues = await _settingManager.GetAllForUserAsync(AbpSettingTestDataBuilder.User1Id); + var settingValues = await _settingManager.GetAllForUserAsync(SettingTestDataBuilder.User1Id); settingValues.ShouldContain(sv => sv.Name == "MySetting1" && sv.Value == "42"); settingValues.ShouldContain(sv => sv.Name == "MySetting2" && sv.Value == "user1-store-value"); settingValues.ShouldContain(sv => sv.Name == "SettingNotSetInStore" && sv.Value == "default-value"); @@ -99,7 +99,7 @@ namespace Volo.Abp.Settings [Fact] public async Task Should_Get_All_From_Store_For_Given_User_Without_Fallback() { - var settingValues = await _settingManager.GetAllForUserAsync(AbpSettingTestDataBuilder.User1Id, fallback: false); + var settingValues = await _settingManager.GetAllForUserAsync(SettingTestDataBuilder.User1Id, fallback: false); settingValues.ShouldContain(sv => sv.Name == "MySetting2" && sv.Value == "user1-store-value"); settingValues.ShouldContain(sv => sv.Name == "MySettingWithoutInherit" && sv.Value == "user1-store-value"); settingValues.ShouldNotContain(sv => sv.Name == "MySetting1"); @@ -108,11 +108,11 @@ namespace Volo.Abp.Settings [Fact] public async Task Should_Delete_Setting_Record_When_Set_To_Null() { - await _settingManager.SetForUserAsync(AbpSettingTestDataBuilder.User1Id, "MySetting2", null); + await _settingManager.SetForUserAsync(SettingTestDataBuilder.User1Id, "MySetting2", null); GetSettingsFromDbContext( UserSettingValueProvider.ProviderName, - AbpSettingTestDataBuilder.User1Id.ToString(), + SettingTestDataBuilder.User1Id.ToString(), "MySetting2" ).Count.ShouldBe(0); } @@ -120,17 +120,17 @@ namespace Volo.Abp.Settings [Fact] public async Task Should_Change_User_Setting() { - (await _settingManager.GetOrNullForUserAsync("MySetting2", AbpSettingTestDataBuilder.User1Id)) + (await _settingManager.GetOrNullForUserAsync("MySetting2", SettingTestDataBuilder.User1Id)) .ShouldBe("user1-store-value"); - await _settingManager.SetForUserAsync(AbpSettingTestDataBuilder.User1Id, "MySetting2", "user1-new-store-value"); + await _settingManager.SetForUserAsync(SettingTestDataBuilder.User1Id, "MySetting2", "user1-new-store-value"); - (await _settingManager.GetOrNullForUserAsync("MySetting2", AbpSettingTestDataBuilder.User1Id)) + (await _settingManager.GetOrNullForUserAsync("MySetting2", SettingTestDataBuilder.User1Id)) .ShouldBe("user1-new-store-value"); GetSettingsFromDbContext( UserSettingValueProvider.ProviderName, - AbpSettingTestDataBuilder.User1Id.ToString(), + SettingTestDataBuilder.User1Id.ToString(), "MySetting2" ).Single().Value.ShouldBe("user1-new-store-value"); } @@ -139,18 +139,18 @@ namespace Volo.Abp.Settings public async Task Should_Delete_Setting_Record_When_Set_To_Fallback_Value() { await _settingManager.SetForUserAsync( - AbpSettingTestDataBuilder.User1Id, + SettingTestDataBuilder.User1Id, "MySetting2", "default-store-value" ); GetSettingsFromDbContext( UserSettingValueProvider.ProviderName, - AbpSettingTestDataBuilder.User1Id.ToString(), + SettingTestDataBuilder.User1Id.ToString(), "MySetting2" ).Count.ShouldBe(0); - (await _settingManager.GetOrNullForUserAsync("MySetting2", AbpSettingTestDataBuilder.User1Id)) + (await _settingManager.GetOrNullForUserAsync("MySetting2", SettingTestDataBuilder.User1Id)) .ShouldBe("default-store-value"); } @@ -158,7 +158,7 @@ namespace Volo.Abp.Settings public async Task Should_Not_Delete_Setting_Record_When_Set_To_Fallback_Value_If_Forced() { await _settingManager.SetForUserAsync( - AbpSettingTestDataBuilder.User1Id, + SettingTestDataBuilder.User1Id, "MySetting2", "default-store-value", forceToSet: true @@ -166,19 +166,19 @@ namespace Volo.Abp.Settings GetSettingsFromDbContext( UserSettingValueProvider.ProviderName, - AbpSettingTestDataBuilder.User1Id.ToString(), + SettingTestDataBuilder.User1Id.ToString(), "MySetting2" ).Single().Value.ShouldBe("default-store-value"); - (await _settingManager.GetOrNullForUserAsync("MySetting2", AbpSettingTestDataBuilder.User1Id)) + (await _settingManager.GetOrNullForUserAsync("MySetting2", SettingTestDataBuilder.User1Id)) .ShouldBe("default-store-value"); } [Fact] public async Task Should_Get_For_Given_User_For_Non_Inherited_Setting() { - (await _settingManager.GetOrNullForUserAsync("MySettingWithoutInherit", AbpSettingTestDataBuilder.User1Id)).ShouldBe("user1-store-value"); - (await _settingManager.GetOrNullForUserAsync("MySettingWithoutInherit", AbpSettingTestDataBuilder.User2Id)).ShouldBeNull(); //Does not inherit! + (await _settingManager.GetOrNullForUserAsync("MySettingWithoutInherit", SettingTestDataBuilder.User1Id)).ShouldBe("user1-store-value"); + (await _settingManager.GetOrNullForUserAsync("MySettingWithoutInherit", SettingTestDataBuilder.User2Id)).ShouldBeNull(); //Does not inherit! (await _settingManager.GetOrNullGlobalAsync("MySettingWithoutInherit")).ShouldBe("default-store-value"); } } diff --git a/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpSettingTestDataBuilder.cs b/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingTestDataBuilder.cs similarity index 89% rename from test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpSettingTestDataBuilder.cs rename to test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingTestDataBuilder.cs index b7c2c95ce1..b535bab045 100644 --- a/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpSettingTestDataBuilder.cs +++ b/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingTestDataBuilder.cs @@ -5,7 +5,7 @@ using Volo.Abp.Session; namespace Volo.Abp.Settings { - public class AbpSettingTestDataBuilder : ITransientDependency + public class SettingTestDataBuilder : ITransientDependency { public static Guid User1Id { get; } = Guid.NewGuid(); public static Guid User2Id { get; } = Guid.NewGuid(); @@ -13,7 +13,7 @@ namespace Volo.Abp.Settings private readonly ISettingRepository _settingRepository; private readonly IGuidGenerator _guidGenerator; - public AbpSettingTestDataBuilder(ISettingRepository settingRepository, IGuidGenerator guidGenerator) + public SettingTestDataBuilder(ISettingRepository settingRepository, IGuidGenerator guidGenerator) { _settingRepository = settingRepository; _guidGenerator = guidGenerator; diff --git a/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpSettingsTestBase.cs b/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingsTestBase.cs similarity index 88% rename from test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpSettingsTestBase.cs rename to test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingsTestBase.cs index 40f89d2796..e9fdc85d76 100644 --- a/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/AbpSettingsTestBase.cs +++ b/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingsTestBase.cs @@ -7,7 +7,7 @@ using Volo.Abp.TestBase; namespace Volo.Abp.Settings { - public class AbpSettingsTestBase : AbpIntegratedTest + public class SettingsTestBase : AbpIntegratedTest { protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options) { @@ -36,7 +36,7 @@ namespace Volo.Abp.Settings context.Settings.Where( s => s.ProviderName == UserSettingValueProvider.ProviderName && - s.ProviderKey == AbpSettingTestDataBuilder.User1Id.ToString() && + s.ProviderKey == SettingTestDataBuilder.User1Id.ToString() && s.Name == "MySetting2" ).ToList() );