mirror of https://github.com/abpframework/abp.git
2 changed files with 77 additions and 0 deletions
@ -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>(); |
||||
|
} |
||||
|
} |
||||
@ -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…
Reference in new issue