Browse Source

Implemented AuthenticatedSimpleStateCheckerSerializerContributor.

pull/13644/head
Halil İbrahim Kalkan 4 years ago
parent
commit
7897fa0dfb
  1. 36
      framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/AuthenticatedSimpleStateCheckerSerializerContributor.cs
  2. 41
      framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/GlobalFeaturesSimpleStateCheckerSerializerContributor_Tests.cs

36
framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/AuthenticatedSimpleStateCheckerSerializerContributor.cs

@ -0,0 +1,36 @@
using System.Text.Json.Nodes;
using Volo.Abp.DependencyInjection;
using Volo.Abp.SimpleStateChecking;
namespace Volo.Abp.Authorization.Permissions;
public class AuthenticatedSimpleStateCheckerSerializerContributor :
ISimpleStateCheckerSerializerContributor,
ISingletonDependency
{
public string SerializeToJson<TState>(ISimpleStateChecker<TState> checker)
where TState : IHasSimpleStateCheckers<TState>
{
if (checker is not RequireAuthenticatedSimpleStateChecker<TState> requireAuthenticatedSimpleStateChecker)
{
return null;
}
var jsonObject = new JsonObject {
["T"] = "A"
};
return jsonObject.ToJsonString();
}
public ISimpleStateChecker<TState> Deserialize<TState>(JsonObject jsonObject)
where TState : IHasSimpleStateCheckers<TState>
{
if (jsonObject["T"]?.ToString() != "A")
{
return null;
}
return new RequireAuthenticatedSimpleStateChecker<TState>();
}
}

41
framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/GlobalFeaturesSimpleStateCheckerSerializerContributor_Tests.cs

@ -0,0 +1,41 @@
using System.Collections.Generic;
using System.Text.Json.Nodes;
using Shouldly;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.SimpleStateChecking;
using Xunit;
namespace Volo.Abp.Authorization;
public class AuthenticatedSimpleStateCheckerSerializerContributor_Tests
{
[Fact]
public void Should_Serialize_RequireGlobalFeaturesSimpleStateChecker()
{
var serializer = new AuthenticatedSimpleStateCheckerSerializerContributor();
var result = serializer.SerializeToJson(
new RequireAuthenticatedSimpleStateChecker<MyState>()
);
result.ShouldBe("{\"T\":\"A\"}");
}
[Fact]
public void Should_Deserialize_RequireGlobalFeaturesSimpleStateChecker()
{
var serializer = new AuthenticatedSimpleStateCheckerSerializerContributor();
var jsonObject = (JsonObject)JsonNode.Parse("{\"T\":\"A\"}");
var checker = serializer.Deserialize<MyState>(jsonObject);
checker.ShouldBeOfType<RequireAuthenticatedSimpleStateChecker<MyState>>();
var globalFeaturesSimpleStateChecker = checker as RequireAuthenticatedSimpleStateChecker<MyState>;
globalFeaturesSimpleStateChecker.ShouldNotBeNull();
}
private class MyState : IHasSimpleStateCheckers<MyState>
{
public List<ISimpleStateChecker<MyState>> StateCheckers { get; } = new();
}
}
Loading…
Cancel
Save