You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

67 lines
4.8 KiB

using System;
using BWP.ABCClient.B2B;
using NUnit.Framework;
namespace BWP.ABCClient
{
[TestFixture]
public class MsgUtilTest
{
[Test]
public void ParseReturnMsg()
{
string msg = "PE1TRz48TWVzc2FnZT48VHJ4UmVzcG9uc2U+PFJldHVybkNvZGU+MDAwMDwvUmV0dXJuQ29kZT48RXJyb3JNZXNzYWdlPjwvRXJyb3JNZXNzYWdlPjxFQ01lcmNoYW50VHlwZT5CMkM8L0VDTWVyY2hhbnRUeXBlPjxNZXJjaGFudElEPjEwMzQ1MjA4Mzk4MDQwNDwvTWVyY2hhbnRJRD48VHJ4VHlwZT5QYXlSZXN1bHQ8L1RyeFR5cGU+PE9yZGVyTm8+VGVzdE9yZGVyPC9PcmRlck5vPjxBbW91bnQ+MTAwLjA8L0Ftb3VudD48QmF0Y2hObz4wMDAwMDE8L0JhdGNoTm8+PFZvdWNoZXJObz4xMjM0NTY8L1ZvdWNoZXJObz48SG9zdERhdGU+MjAwOS8wOS8wODwvSG9zdERhdGU+PEhvc3RUaW1lPjEwOjU1OjUwPC9Ib3N0VGltZT48TWVyY2hhbnRSZW1hcmtzPlRoaXMgaXMgdGVzdCE8L01lcmNoYW50UmVtYXJrcz48UGF5VHlwZT5QQVkwMTwvUGF5VHlwZT48Tm90aWZ5VHlwZT4wPC9Ob3RpZnlUeXBlPjwvVHJ4UmVzcG9uc2U+PC9NZXNzYWdlPjxTaWduYXR1cmUtQWxnb3JpdGhtPlNIQTF3aXRoUlNBPC9TaWduYXR1cmUtQWxnb3JpdGhtPjxTaWduYXR1cmU+SVE4Z2pFSlRvK0FXQWxqWGVhcVVwdW43Z1JCNnNWdEhRSS9pNFdqUTNISExqZmphMTF3RE5VRVUyVzBVRUNsQnp5RFZuc0tRUHE2MmliM21YRjgrSnJZTWdpYW53WDNBNlRJbkxXMXJQTldVV1AwNGl5UVIvTUxuMHNaTjJ1S2JFbU5SWXRURjNPQ0lsTHFEblppYk1tSEZPTzhnektneVBxeEtaUkRRaHRZPTwvU2lnbmF0dXJlPjwvTVNHPg==";
Console.WriteLine(MsgUtil.FromBase64StringToXml(msg));
}
[Test]
public void SelectMultiNode()
{
string str = "<Records><Record>123</Record><Record>134</Record><Record>456</Record></Records>";
string[] values = MsgUtil.GetMultiInnerXml(str, "//Record");
Assert.AreEqual("123", values[0]);
Assert.AreEqual("134", values[1]);
Assert.AreEqual("456", values[2]);
}
[Test]
public void MsgToXml()
{
var msg = FundTransferRequest.New();
var xml = MsgUtil.MsgToBareXml(msg);
Console.WriteLine(xml);
msg = MsgUtil.ParseXmlToMsg<FundTransferRequest>(xml);
Console.WriteLine(msg.Message.Merchant.ECMerchantType);
var response = new FundTransferResponse();
response.Message = new FundTransferResponse.MessageContent();
response.Message.TrxResponse = new FundTransferResponse.TrxResponseContent();
response.Message.TrxResponse.ReturnCode = "0000";
xml = MsgUtil.MsgToBareXml(response);
Console.WriteLine(xml);
var obj = MsgUtil.ParseXmlToMsg<FundTransferResponse>(xml);
Assert.AreEqual("0000", obj.Message.TrxResponse.ReturnCode);
}
[Test]
public void GetInnerXml()
{
var msg = "<MSG><Message><Merchant><ECMerchantType>B2C</ECMerchantType><MerchantID>103452083980409</MerchantID></Merchant><TrxRequest><TrxType>PayReq</TrxType><Order><OrderNo>634333823922218745</OrderNo><OrderAmount>254011</OrderAmount><OrderDesc></OrderDesc><OrderDate>2011/02/15</OrderDate><OrderTime>16:02:29</OrderTime><OrderURL>http://119.167.225.52/B2/InternetSale/Pub/B2CReceive.aspx?id=10821</OrderURL><OrderItems></OrderItems></Order><ProductType>2</ProductType><PaymentType>1</PaymentType><NotifyType>1</NotifyType><ResultNotifyURL>http://119.167.225.52/B2/InternetSale/Pub/B2CReceive.aspx</ResultNotifyURL><MerchantRemarks></MerchantRemarks><PaymentLinkType>1</PaymentLinkType></TrxRequest></Message><Signature-Algorithm>SHA1withRSA</Signature-Algorithm><Signature>Nj7TTt4jyHTH93TekdWXr98tFKbjz/aRx3PBaE0SA6ns4bwqLbpI/27ljN90tElzqVnZWyHIKjDjo25SpPkgXlCsQGHtQcLbA6ZVXVqH18SjLxc4baUyEokMlnpbPYHAiOufOG3Ss8bI3/QlCbESV+7aeOwBfkQESAYvzsZWSWE=</Signature></MSG>";
var expectmsg = "<Merchant><ECMerchantType>B2C</ECMerchantType><MerchantID>103452083980409</MerchantID></Merchant><TrxRequest><TrxType>PayReq</TrxType><Order><OrderNo>634333823922218745</OrderNo><OrderAmount>254011</OrderAmount><OrderDesc></OrderDesc><OrderDate>2011/02/15</OrderDate><OrderTime>16:02:29</OrderTime><OrderURL>http://119.167.225.52/B2/InternetSale/Pub/B2CReceive.aspx?id=10821</OrderURL><OrderItems></OrderItems></Order><ProductType>2</ProductType><PaymentType>1</PaymentType><NotifyType>1</NotifyType><ResultNotifyURL>http://119.167.225.52/B2/InternetSale/Pub/B2CReceive.aspx</ResultNotifyURL><MerchantRemarks></MerchantRemarks><PaymentLinkType>1</PaymentLinkType></TrxRequest>";
Assert.AreEqual(expectmsg, MsgUtil.GetInnerXml(msg, "Message"));
expectmsg = "Nj7TTt4jyHTH93TekdWXr98tFKbjz/aRx3PBaE0SA6ns4bwqLbpI/27ljN90tElzqVnZWyHIKjDjo25SpPkgXlCsQGHtQcLbA6ZVXVqH18SjLxc4baUyEokMlnpbPYHAiOufOG3Ss8bI3/QlCbESV+7aeOwBfkQESAYvzsZWSWE=";
Assert.AreEqual(expectmsg, MsgUtil.GetInnerXml(msg, "Signature"));
}
[Test]
public void CompressDeCompress()
{
string str = "<Merchant><ECMerchantType>B2C</ECMerchantType><MerchantID>103452083980409</MerchantID></Merchant><TrxResponse><ReturnCode>0000</ReturnCode><ErrorMessage>交易成功</ErrorMessage><TrxType>PayReq</TrxType><OrderNo>634333823922218745</OrderNo><PaymentURL>https://easyabc.95599.cn/b2c/NotCheckStatus/PaymentModeAct.ebf?TOKEN=12977568750460430844</PaymentURL><OrderAmount>254011</OrderAmount></TrxResponse>";
Assert.AreEqual(str, MsgUtil.DeCompress(MsgUtil.Compress(str)));
}
}
}