feat(tenpayv3): CertificateEntry 支持 JSON 序列化或反序列化

This commit is contained in:
Fu Diwei 2021-12-01 21:17:16 +08:00
parent d989734681
commit e797d34331
2 changed files with 32 additions and 0 deletions

View File

@ -28,6 +28,8 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Settings
/// </summary>
public DateTimeOffset ExpireTime { get; }
[Newtonsoft.Json.JsonConstructor]
[System.Text.Json.Serialization.JsonConstructor]
public CertificateEntry(string serialNumber, string certificate, DateTimeOffset effectiveTime, DateTimeOffset expireTime)
{
if (string.IsNullOrEmpty(serialNumber))

View File

@ -0,0 +1,30 @@
using System;
using Xunit;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
{
public class WechatTenpayCertificateManagerTests
{
[Fact(DisplayName = "序列化与反序列化 `CertificateEntry`")]
public void CertificateEntrySerializationTest()
{
var entry = new Settings.CertificateEntry("SN", "-----BEGIN CERTIFICATE-----END CERTIFICATE-----", DateTimeOffset.Now, DateTimeOffset.Now);
var serialized1 = Newtonsoft.Json.JsonConvert.SerializeObject(entry);
var deserialized1 = Newtonsoft.Json.JsonConvert.DeserializeObject<Settings.CertificateEntry>(serialized1);
Assert.Equal(entry.SerialNumber, deserialized1.SerialNumber);
Assert.Equal(entry.Certificate, deserialized1.Certificate);
Assert.Equal(entry.EffectiveTime, deserialized1.EffectiveTime);
Assert.Equal(entry.ExpireTime, deserialized1.ExpireTime);
var serialized2 = System.Text.Json.JsonSerializer.Serialize(entry);
var deserialized2 = System.Text.Json.JsonSerializer.Deserialize<Settings.CertificateEntry>(serialized2);
Assert.Equal(entry.SerialNumber, deserialized2.SerialNumber);
Assert.Equal(entry.Certificate, deserialized2.Certificate);
Assert.Equal(entry.EffectiveTime, deserialized2.EffectiveTime);
Assert.Equal(entry.ExpireTime, deserialized2.ExpireTime);
}
}
}