diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDefinitionSerializer.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDefinitionSerializer.cs index 47abbc97eb..13276be20b 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDefinitionSerializer.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDefinitionSerializer.cs @@ -64,7 +64,21 @@ public class PermissionDefinitionSerializer : IPermissionDefinitionSerializer, I public Task SerializeAsync(PermissionGroupDefinition permissionGroup) { - throw new System.NotImplementedException(); + using (CultureHelper.Use(CultureInfo.InvariantCulture)) + { + var permissionGroupRecord = new PermissionGroupDefinitionRecord( + GuidGenerator.Create(), + permissionGroup.Name, + permissionGroup.DisplayName.Localize(StringLocalizerFactory) + ); + + foreach (var property in permissionGroup.Properties) + { + permissionGroupRecord.SetProperty(property.Key, property.Value); + } + + return Task.FromResult(permissionGroupRecord); + } } public Task DeserializeAsync(PermissionGroupDefinitionRecord permissionGroupRecord) diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDefinitionSerializer_Tests.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDefinitionSerializer_Tests.cs index 35a7961e11..cac2892838 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDefinitionSerializer_Tests.cs +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDefinitionSerializer_Tests.cs @@ -1,4 +1,6 @@ -using System.Threading.Tasks; +using System; +using System.Linq; +using System.Threading.Tasks; using Shouldly; using Volo.Abp.Authorization.Permissions; using Volo.Abp.Data; @@ -18,6 +20,25 @@ public class PermissionDefinitionSerializer_Tests : PermissionTestBase { _serializer = GetRequiredService(); } + + [Fact] + public async Task Serialize_Permission_Group_Definition() + { + // Arrange + + var context = new PermissionDefinitionContext(null); + var group1 = CreatePermissionGroup1(context); + + // Act + + var permissionGroupRecord = await _serializer.SerializeAsync(group1); + + //Assert + + permissionGroupRecord.Name.ShouldBe("Group1"); + permissionGroupRecord.DisplayName.ShouldBe("Group one"); + permissionGroupRecord.GetProperty("CustomProperty1").ShouldBe("CustomValue1"); + } [Fact] public async Task Serialize_Complex_Permission_Definition() @@ -52,6 +73,41 @@ public class PermissionDefinitionSerializer_Tests : PermissionTestBase permissionRecord.MultiTenancySide.ShouldBe(MultiTenancySides.Tenant); permissionRecord.StateCheckers.ShouldBe("[{\"T\":\"GF\",\"A\":true,\"N\":[\"GlobalFeature1\",\"GlobalFeature2\"]}]"); } + + [Fact(Skip = "Not implemented yet")] + public async Task Deserialize_Complex_Permission_Definition() + { + // Arrange + + var permissionRecord = new PermissionDefinitionRecord + { + Name = "Permission1", + GroupName = "Group1", + DisplayName = "Permission one", + Providers = "ProviderA,ProviderB", + IsEnabled = true, + MultiTenancySide = MultiTenancySides.Tenant, + StateCheckers = "[{\"T\":\"GF\",\"A\":true,\"N\":[\"GlobalFeature1\",\"GlobalFeature2\"]}]" + }; + + // Act + + var permission = await _serializer.DeserializeAsync(permissionRecord); + + //Assert + + permission.Name.ShouldBe("Permission1"); + permission.DisplayName.ShouldBeOfType(); + permission.DisplayName.As().Value.ShouldBe("Permission one"); + permission.Parent.ShouldBeNull(); + permission.MultiTenancySide.ShouldBe(MultiTenancySides.Tenant); + permission.IsEnabled.ShouldBe(true); + permission.Providers.Count.ShouldBe(2); + permission.Providers.ShouldContain("ProviderA"); + permission.Providers.ShouldContain("ProviderB"); + permission.StateCheckers.Count.ShouldBe(1); + permission.StateCheckers[0].ShouldBeOfType>(); + } private static PermissionGroupDefinition CreatePermissionGroup1( IPermissionDefinitionContext context)