From f162d2de0284ac95b160cd665833b2a4477db0c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 16 Feb 2018 11:47:33 +0300 Subject: [PATCH] Added data for permission tests. --- .../Volo.Abp.Identity.Tests.csproj | 1 + .../Identity/AbpIdentityDomainTestModule.cs | 10 +++- .../Identity/AbpIdentityTestDataBuilder.cs | 56 +++++++++++++++++-- ...dentityTestPermissionDefinitionProvider.cs | 17 ++++++ .../Abp/Identity/PermissionManager_Tests.cs | 18 ++++-- .../Volo/Abp/Identity/TestPermissionNames.cs | 14 +++++ 6 files changed, 106 insertions(+), 10 deletions(-) create mode 100644 test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/IdentityTestPermissionDefinitionProvider.cs create mode 100644 test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/TestPermissionNames.cs diff --git a/test/Volo.Abp.Identity.Tests/Volo.Abp.Identity.Tests.csproj b/test/Volo.Abp.Identity.Tests/Volo.Abp.Identity.Tests.csproj index db72b07307..322a11b74f 100644 --- a/test/Volo.Abp.Identity.Tests/Volo.Abp.Identity.Tests.csproj +++ b/test/Volo.Abp.Identity.Tests/Volo.Abp.Identity.Tests.csproj @@ -14,6 +14,7 @@ + diff --git a/test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/AbpIdentityDomainTestModule.cs b/test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/AbpIdentityDomainTestModule.cs index f19bdded46..d9c04f795a 100644 --- a/test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/AbpIdentityDomainTestModule.cs +++ b/test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/AbpIdentityDomainTestModule.cs @@ -5,13 +5,16 @@ using Volo.Abp.Autofac; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.Identity.EntityFrameworkCore; using Volo.Abp.Modularity; +using Volo.Abp.Permissions; +using Volo.Abp.Permissions.EntityFrameworkCore; using Volo.Abp.Uow; namespace Volo.Abp.Identity { [DependsOn( typeof(AbpIdentityDomainModule), - typeof(AbpIdentityEntityFrameworkCoreModule), + typeof(AbpIdentityEntityFrameworkCoreModule), + typeof(AbpPermissionsEntityFrameworkCoreModule), typeof(AbpAutofacModule))] public class AbpIdentityDomainTestModule : AbpModule { @@ -34,6 +37,11 @@ namespace Volo.Abp.Identity options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; //EF in-memory database does not support transactions }); + services.Configure(options => + { + options.DefinitionProviders.Add(); + }); + services.AddAssemblyOf(); } diff --git a/test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/AbpIdentityTestDataBuilder.cs b/test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/AbpIdentityTestDataBuilder.cs index e321d107ed..eb5e9fa235 100644 --- a/test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/AbpIdentityTestDataBuilder.cs +++ b/test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/AbpIdentityTestDataBuilder.cs @@ -1,5 +1,7 @@ using Volo.Abp.DependencyInjection; using Volo.Abp.Guids; +using Volo.Abp.Permissions; +using Volo.Abp.Session; namespace Volo.Abp.Identity { @@ -8,25 +10,33 @@ namespace Volo.Abp.Identity private readonly IGuidGenerator _guidGenerator; private readonly IIdentityUserRepository _userRepository; private readonly IIdentityRoleRepository _roleRepository; + private readonly IPermissionGrantRepository _permissionGrantRepository; private IdentityRole _adminRole; private IdentityRole _moderator; private IdentityRole _supporterRole; + private IdentityUser _adminUser; + private IdentityUser _john; + private IdentityUser _david; public AbpIdentityTestDataBuilder( IGuidGenerator guidGenerator, IIdentityUserRepository userRepository, - IIdentityRoleRepository roleRepository) + IIdentityRoleRepository roleRepository, + IPermissionGrantRepository permissionGrantRepository) { _guidGenerator = guidGenerator; _userRepository = userRepository; _roleRepository = roleRepository; + _permissionGrantRepository = permissionGrantRepository; } public void Build() { AddRoles(); + AddRolePermissions(); AddUsers(); + AddUserPermissions(); } private void AddRoles() @@ -40,12 +50,48 @@ namespace Volo.Abp.Identity _roleRepository.Insert(_supporterRole); } + private void AddRolePermissions() + { + AddPermission(TestPermissionNames.MyPermission1, RolePermissionValueProvider.ProviderName, _adminRole.Name); + AddPermission(TestPermissionNames.MyPermission2, RolePermissionValueProvider.ProviderName, _adminRole.Name); + AddPermission(TestPermissionNames.MyPermission2_ChildPermission1, RolePermissionValueProvider.ProviderName, _adminRole.Name); + + AddPermission(TestPermissionNames.MyPermission1, RolePermissionValueProvider.ProviderName, _moderator.Name); + AddPermission(TestPermissionNames.MyPermission2, RolePermissionValueProvider.ProviderName, _moderator.Name); + + AddPermission(TestPermissionNames.MyPermission1, RolePermissionValueProvider.ProviderName, _supporterRole.Name); + } + private void AddUsers() { - var john = new IdentityUser(_guidGenerator.Create(), "john.nash"); - john.AddRole(_moderator.Id); - john.AddRole(_supporterRole.Id); - _userRepository.Insert(john); + _adminUser = new IdentityUser(_guidGenerator.Create(), "administrator"); + _adminUser.AddRole(_adminRole.Id); + _userRepository.Insert(_adminUser); + + _john = new IdentityUser(_guidGenerator.Create(), "john.nash"); + _john.AddRole(_moderator.Id); + _john.AddRole(_supporterRole.Id); + _userRepository.Insert(_john); + + _david = new IdentityUser(_guidGenerator.Create(), "david"); + _userRepository.Insert(_david); + } + + private void AddUserPermissions() + { + AddPermission(TestPermissionNames.MyPermission1, UserPermissionValueProvider.ProviderName, _david.Id.ToString()); + } + + private void AddPermission(string permissionName, string providerName, string providerKey) + { + _permissionGrantRepository.Insert( + new PermissionGrant( + _guidGenerator.Create(), + permissionName, + providerName, + providerKey + ) + ); } } } \ No newline at end of file diff --git a/test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/IdentityTestPermissionDefinitionProvider.cs b/test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/IdentityTestPermissionDefinitionProvider.cs new file mode 100644 index 0000000000..4d01084557 --- /dev/null +++ b/test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/IdentityTestPermissionDefinitionProvider.cs @@ -0,0 +1,17 @@ +using Volo.Abp.Permissions; + +namespace Volo.Abp.Identity +{ + public class IdentityTestPermissionDefinitionProvider : PermissionDefinitionProvider + { + public override void Define(IPermissionDefinitionContext context) + { + var testGroup = context.AddGroup(TestPermissionNames.Groups.TestGroup); + + testGroup.AddPermission(TestPermissionNames.MyPermission1); + + var myPermission2 = testGroup.AddPermission(TestPermissionNames.MyPermission2); + myPermission2.AddChild(TestPermissionNames.MyPermission2_ChildPermission1); + } + } +} diff --git a/test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/PermissionManager_Tests.cs b/test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/PermissionManager_Tests.cs index 0e74cc6f5b..531ed990c8 100644 --- a/test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/PermissionManager_Tests.cs +++ b/test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/PermissionManager_Tests.cs @@ -1,10 +1,20 @@ -using System; -using System.Collections.Generic; -using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Permissions; namespace Volo.Abp.Identity { - public class PermissionManager_Tests + public class PermissionManager_Tests : AbpIdentityDomainTestBase { + private readonly IPermissionManager _permissionManager; + + public PermissionManager_Tests() + { + _permissionManager = GetRequiredService(); + } + + public async Task Test1() + { + + } } } diff --git a/test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/TestPermissionNames.cs b/test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/TestPermissionNames.cs new file mode 100644 index 0000000000..1e65171eae --- /dev/null +++ b/test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/TestPermissionNames.cs @@ -0,0 +1,14 @@ +namespace Volo.Abp.Identity +{ + public static class TestPermissionNames + { + public static class Groups + { + public const string TestGroup = "TestGroup"; + } + + public const string MyPermission1 = "MyPermission1"; + public const string MyPermission2 = "MyPermission2"; + public const string MyPermission2_ChildPermission1 = "MyPermission2.ChildPermission1"; + } +} \ No newline at end of file