From 041f47407d2d8fda281aa4eb4eedf19ad3263a97 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Thu, 2 Dec 2021 09:59:54 +0800 Subject: [PATCH] =?UTF-8?q?test(tenpayv3):=20=E8=A1=A5=E5=85=85=E9=83=A8?= =?UTF-8?q?=E5=88=86=E5=90=AB=E8=AF=B7=E6=B1=82=E6=95=8F=E6=84=9F=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E4=B8=AD=E8=AF=B7=E6=B1=82=E7=9A=84=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8A=A0=E5=AF=86=E7=9A=84=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Utilities/Internal/ReflectionUtility.cs | 9 ++++---- .../WechatTenpayRequestEncryptionTests.cs | 21 +++++++++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Utilities/Internal/ReflectionUtility.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Utilities/Internal/ReflectionUtility.cs index 0d8406f8..9a0dc26a 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Utilities/Internal/ReflectionUtility.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Utilities/Internal/ReflectionUtility.cs @@ -13,7 +13,6 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Utilities InnerReplacePropertyStringValue(ref obj, replacement, null); } - private static void InnerReplacePropertyStringValue(ref T obj, ReplacePropertyStringValueReplacement replacement, PropertyInfo? currentProp) { if (obj == null) throw new ArgumentNullException(nameof(obj)); @@ -25,7 +24,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Utilities if (objType.IsArray || obj is IList || obj is IDictionary) { - EachCollectionProperty(ref obj, objType, replacement, null); + InnerReplaceEachCollectionPropertyStringValue(ref obj, objType, replacement, null); } else { @@ -55,12 +54,14 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Utilities object? value = childProp.GetValue(obj, null); if (value is null) continue; - EachCollectionProperty(ref value, propType, replacement, childProp); + + InnerReplaceEachCollectionPropertyStringValue(ref value, propType, replacement, childProp); } } } } - private static void EachCollectionProperty(ref T obj, Type objType, ReplacePropertyStringValueReplacement replacement, PropertyInfo? currentProp) + + private static void InnerReplaceEachCollectionPropertyStringValue(ref T obj, Type objType, ReplacePropertyStringValueReplacement replacement, PropertyInfo? currentProp) { if (objType.IsArray) { diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/WechatTenpayRequestEncryptionTests.cs b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/WechatTenpayRequestEncryptionTests.cs index 8b63c899..1e754ddd 100644 --- a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/WechatTenpayRequestEncryptionTests.cs +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/WechatTenpayRequestEncryptionTests.cs @@ -42,5 +42,26 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests Assert.Equal(MockText, data.Account); Assert.Equal(MockText, Utilities.RSAUtility.DecryptWithECB(RSA_PRIVATE_KEY, data.Name)); } + + [Fact(DisplayName = "加密请求中的敏感数据([POST] /profitsharing/orders)")] + public void DecryptResponseSensitiveProperty_CreateProfitSharingOrderRequest() + { + var mock = new Models.CreateProfitSharingOrderRequest() + { + ReceiverList = new List() + { + new Models.CreateProfitSharingOrderRequest.Types.Receiver() + { + Account = MockText, + Name = MockText + } + } + }; + var data = MockClientInstance.Value.EncryptRequestSensitiveProperty(mock); + + Assert.Equal(RSA_CERTSN, data.WechatpayCertSerialNumber); + Assert.Equal(MockText, data.ReceiverList[0].Account); + Assert.Equal(MockText, Utilities.RSAUtility.DecryptWithECB(RSA_PRIVATE_KEY, data.ReceiverList[0].Name)); + } } }