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