public void TextTest2() { var postModel = new PostModel() { Msg_Signature = "118b034be74c917464f833cd32fc3f74958b2c93", Timestamp = "1505643268", Nonce = "1504921331", Token = "3J5JTpb4j8Yfk", EncodingAESKey = "XtJUgDlFYncPP3z4V7W6Jv4ietcIFveUn6LP1KzOBNf", CorpId = "" }; var messageHandler = new CustomMessageHandlers(XDocument.Parse(testFileXml), postModel, 10); Assert.IsNotNull(messageHandler.RequestDocument); Assert.IsNotNull(messageHandler.RequestMessage); Assert.IsNotNull(messageHandler.EncryptPostData); Assert.IsTrue(messageHandler.AgentId == 2); messageHandler.Execute(); Assert.IsNotNull(messageHandler.ResponseDocument); Assert.IsNotNull(messageHandler.ResponseMessage); Console.WriteLine(messageHandler.RequestDocument); }
public void TextTest() { var postModel = new PostModel() { Msg_Signature = "845997ceb6e4fd73edd9a377be227848ce20d34f", Timestamp = "1412587525", Nonce = "1501543730", Token = "fzBsmSaI8XE1OwBh", EncodingAESKey = "9J8CQ7iF9mLtQDZrUM1loOVQ6oNDxVtBi1DBU2oaewl", CorpId = "wx7618c0a6d9358622" }; var messageHandler = new CustomMessageHandlers(XDocument.Parse(testXml), postModel, 10); Assert.IsNotNull(messageHandler.RequestDocument); Assert.IsNotNull(messageHandler.RequestMessage); Assert.IsNotNull(messageHandler.EncryptPostData); Assert.IsTrue(messageHandler.AgentId == 2); messageHandler.Execute(); Assert.IsNotNull(messageHandler.ResponseDocument); Assert.IsNotNull(messageHandler.ResponseMessage); Console.WriteLine(messageHandler.RequestDocument); }
public void TextTest() { var postModel = new PostModel() { Msg_Signature = "", Timestamp = "", Nonce = "", Token = "", EncodingAESKey = "", CorpId = "" }; var messageHandler = new CustomMessageHandlers(XDocument.Parse(testXml), postModel, 10); Assert.IsNotNull(messageHandler.RequestDocument); Assert.IsNotNull(messageHandler.RequestMessage); Assert.IsNotNull(messageHandler.EncryptPostData); Assert.IsTrue(messageHandler.AgentId == 2); messageHandler.Execute(); Assert.IsNotNull(messageHandler.ResponseDocument); Assert.IsNotNull(messageHandler.ResponseMessage); Console.WriteLine(messageHandler.RequestDocument); }
public void FileTest() { //数据不全,未开始正式测试 var postModel = new PostModel() { Msg_Signature = "118b034be74c917464f833cd32fc3f74958b2c93", Timestamp = "1505643268", Nonce = "1504921331", Token = "3J5JTpb4j8Yfk", EncodingAESKey = "XtJUgDlFYncPP3z4V7W6Jv4ietcIFveUn6LP1KzOBNf", CorpId = "" }; var messageHandler = new CustomMessageHandlers(XDocument.Parse(testFileXml), postModel, 10); }
public void LimitRecordCountTest() { var doc = XDocument.Parse(xmlText); var maxRecordCount = 1; for (int i = 0; i < 100; i++) { var messageHandler = new CustomMessageHandlers(doc, null, maxRecordCount); messageHandler.Execute(); } var weixinContext = MessageHandler <MessageContext <IRequestMessageBase, IResponseMessageBase> > .GlobalWeixinContext.MessageQueue.FirstOrDefault(); var recordCount = MessageHandler <MessageContext <IRequestMessageBase, IResponseMessageBase> > .GlobalWeixinContext.MaxRecordCount; Assert.IsNotNull(weixinContext); Assert.AreEqual(recordCount, weixinContext.RequestMessages.Count); Assert.AreEqual(recordCount, weixinContext.ResponseMessages.Count); }
public void RequestMessageEvent_SysApprovalChangeTest() { //官方提供 var xml = @"<xml> <ToUserName><![CDATA[ww1cSD21f1e9c0caaa]]></ToUserName> <FromUserName><![CDATA[sys]]></FromUserName> <CreateTime>1571732272</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[sys_approval_change]]></Event> <AgentID>3010040</AgentID> <ApprovalInfo> <SpNo>201910220003</SpNo> <SpName><![CDATA[示例模板]]></SpName> <SpStatus>1</SpStatus> <TemplateId><![CDATA[3TkaH5KFbrG9heEQWLJjhgpFwmqAFB4dLEnapaB7aaa]]></TemplateId> <ApplyTime>1571728713</ApplyTime> <Applyer> <UserId><![CDATA[WuJunJie]]></UserId> <Party><![CDATA[1]]></Party> </Applyer> <SpRecord> <SpStatus>1</SpStatus> <ApproverAttr>2</ApproverAttr> <Details> <Approver> <UserId><![CDATA[WangXiaoMing]]></UserId> </Approver> <Speech><![CDATA[]]></Speech> <SpStatus>1</SpStatus> <SpTime>0</SpTime> </Details> <Details> <Approver> <UserId><![CDATA[XiaoGangHuang]]></UserId> </Approver> <Speech><![CDATA[]]></Speech> <SpStatus>1</SpStatus> <SpTime>0</SpTime> </Details> </SpRecord> <SpRecord> <SpStatus>1</SpStatus> <ApproverAttr>1</ApproverAttr> <Details> <Approver> <UserId><![CDATA[XiaoHongLiu]]></UserId> </Approver> <Speech><![CDATA[]]></Speech> <SpStatus>1</SpStatus> <SpTime>0</SpTime> </Details> </SpRecord> <Notifyer> <UserId><![CDATA[ChengLiang]]></UserId> </Notifyer> <Notifyer> <UserId><![CDATA[ChengLiang2]]></UserId> </Notifyer> <Comments> <CommentUserInfo> <UserId><![CDATA[LiuZhi]]></UserId> </CommentUserInfo> <CommentTime>1571732272</CommentTime> <CommentContent><![CDATA[这是一个备注]]></CommentContent> <CommentId><![CDATA[6750538708562308220]]></CommentId> </Comments> <Comments> <CommentUserInfo> <UserId><![CDATA[LiuZhi2]]></UserId> </CommentUserInfo> <CommentTime>15717322723</CommentTime> <CommentContent><![CDATA[这又是一个备注]]></CommentContent> <CommentId><![CDATA[6750538708562308221]]></CommentId> <Attach>MediaId</Attach> </Comments> <StatuChangeEvent>10</StatuChangeEvent> </ApprovalInfo> </xml>"; var postModel = new PostModel() { Msg_Signature = "22cb38c34ae9ba4bdec938405b931ad3ece7e19e", Timestamp = "1644320363", Nonce = "1645172247", Token = "", EncodingAESKey = "", CorpId = "" }; var messageHandler = new CustomMessageHandlers(XDocument.Parse(xml), postModel, 10); messageHandler.Execute(); var responseMessage = messageHandler.ResponseDocument; Assert.IsNotNull(messageHandler.RequestMessage); Assert.AreEqual(RequestMsgType.Event, messageHandler.RequestMessage.MsgType); Assert.IsInstanceOfType(messageHandler.RequestMessage, typeof(RequestMessageEvent_SysApprovalChange)); var requestMessage = messageHandler.RequestMessage as RequestMessageEvent_SysApprovalChange; Console.WriteLine(requestMessage.ToJson(true)); Assert.AreEqual(Event.SYS_APPROVAL_CHANGE, requestMessage.Event); Assert.IsNotNull(requestMessage.ApprovalInfo); Assert.AreEqual((ulong)201910220003, requestMessage.ApprovalInfo.SpNo); Assert.AreEqual("示例模板", requestMessage.ApprovalInfo.SpName); Assert.AreEqual((byte)1, requestMessage.ApprovalInfo.SpStatus); Assert.IsNotNull(requestMessage.ApprovalInfo.SpRecords); Assert.AreEqual(2, requestMessage.ApprovalInfo.SpRecords.Length); Assert.AreEqual(2, requestMessage.ApprovalInfo.SpRecords[0].ApproverAttr); Assert.AreEqual(2, requestMessage.ApprovalInfo.SpRecords[0].Details.Length); Assert.AreEqual(1, requestMessage.ApprovalInfo.SpRecords[0].Details[0].SpStatus); Assert.AreEqual(2, requestMessage.ApprovalInfo.Notifyers.Length); Assert.AreEqual("ChengLiang2", requestMessage.ApprovalInfo.Notifyers[1].UserId); Assert.AreEqual(2, requestMessage.ApprovalInfo.Comments.Length); Assert.AreEqual("LiuZhi2", requestMessage.ApprovalInfo.Comments[1].CommentUserInfo.UserId); Assert.AreEqual("这又是一个备注", requestMessage.ApprovalInfo.Comments[1].CommentContent); Assert.AreEqual("6750538708562308221", requestMessage.ApprovalInfo.Comments[1].CommentId); Assert.AreEqual("MediaId", requestMessage.ApprovalInfo.Comments[1].Attach); /* 实际收到的: * <?xml version="1.0" encoding="utf-8"?> * <xml> * <ToUserName><![CDATA[ww8533bff007c0b489]]></ToUserName> * <FromUserName><![CDATA[sys]]></FromUserName> * <CreateTime>1645070366</CreateTime> * <MsgType><![CDATA[event]]></MsgType> * <Event><![CDATA[sys_approval_change]]></Event> * <AgentID>1000002</AgentID> * <ApprovalInfo> * <SpNo>202202170001</SpNo> * <SpName><![CDATA[SYS微信SDK审批]]></SpName> * <SpStatus>1</SpStatus> * <TemplateId><![CDATA[C4NxepvGj51gbkeGXHQgYRArW96WrxRinNfyCxo7N]]></TemplateId> * <ApplyTime>1645070220</ApplyTime> * <Applyer> * <UserId><![CDATA[SuZhenWei]]></UserId> * <Party><![CDATA[1]]></Party> * </Applyer> * <SpRecord> * <SpStatus>1</SpStatus> * <ApproverAttr>2</ApproverAttr> * <Details> * <Approver> * <UserId><![CDATA[FuYunKun]]></UserId> * </Approver> * <Speech><![CDATA[]]></Speech> * <SpStatus>1</SpStatus> * <SpTime>0</SpTime> * </Details> * <Details> * <Approver> * <UserId><![CDATA[LiShiJie]]></UserId> * </Approver> * <Speech><![CDATA[]]></Speech> * <SpStatus>1</SpStatus> * <SpTime>0</SpTime> * </Details> * </SpRecord> * <Notifyer> * <UserId><![CDATA[FuYunKun]]></UserId> * </Notifyer> * <Comments> * <CommentUserInfo> * <UserId><![CDATA[SuZhenWei]]></UserId> * </CommentUserInfo> * <CommentTime>1645070277</CommentTime> * <CommentContent><![CDATA[添加附件的备注]]></CommentContent> * <CommentId><![CDATA[7065523039889409558]]></CommentId> * <Attach><![CDATA[WWCISP_HKLFyKUsme6wsuH4ZZm6qEqVOO0MkefA9pby86N7D4emHdGDnOrVnC7epnwvEwxTis83LEFPyPs4fDFuAoSQHJVs_OBl4OCeg0Hblv17oE5HcW7YebDNWB0pi_zopBcqDfmPHnpb_BG36mBhqhzrDQEe0DjAvzGeOsmCPK7S1mxUF9s_8-gyax2Z3HiSeKwLYlX-JgAQMKiawoDVDf3TY_EvzAo7Xlu1Jnd4aeBxLUWpjnXwpXSxlTaM680Yj-UmPVStbqQHTjHO8oL7B-3lmaoKqVbrFoDVuS0-JhkHPYs8kQO4IU7BUKKZ7y1gRRVcU9x0eVyOzWysujcrF44XXMMt6_kZ1NtL-eCbQCD4JRdzdZRXhMPlGJwPTFAxC3Idab9S-q1RgVqWThUdvoGs_Ykw82IzGOVBXEgobS1Bu_doXgSkBp_YQuL23vAt1ETlirNEQSpK1Fk3GdnYcBfsaJ-Q35FGMQ6_zlGGDLCzGmVLbGTIXiCe2nyELMBAgIzy7PI56YYtbCjJ-et8biXrLMvugAx3W0GHGTiz5uHEhcTwMAa288yMQm1-Ez9bDo8kPuNA3QJEMZ05kE40rxQxVXGmDiFqa8VSAooQmhYUqOsBYk7ZAYvGSxbchMVVr7Epk6RzOM9DSMjXLTCKfuSmovkHs8p_A4LeAdVxoZtcrUg]]></Attach> * </Comments> * <Comments> * <CommentUserInfo> * <UserId><![CDATA[SuZhenWei]]></UserId> * </CommentUserInfo> * <CommentTime>1645070366</CommentTime> * <CommentContent><![CDATA[第二条备注]]></CommentContent> * <CommentId><![CDATA[7065523422141540548]]></CommentId> * <Attach><![CDATA[WWCISP_HKLFyKUsme6wsuH4ZZm6qEqVOO0MkefA9pby86N7D4emHdGDnOrVnC7epnwvEwxTis83LEFPyPs4fDFuAoSQHJVs_OBl4OCeg0Hblv17oE5x75XL8TRkcDWGiB_h9OidJp_VuR7kou5pSfo01qVecYUqgz6HElWdivjIrZX6U_w6xHGZ_8IvB6KJodYQ27IMh4Za2UdxuEjBqnLBJBDPyNqOV66i8JgYmKq2imHJlpAhqwQKUDNzHJ2J53yPbj_UlzaRDnGa3pS6d8D617F9s5hEPggdQuVXxShGRZLlFLweU2o5HInA_LX8Ch4KIYtvP1GxBzboAOOiBvLv4rnwbcAQwcugsgvCJ7Cd5Hz_g_U1JsA1-4FGXNPNNdYnlwzuCVeBiIr48mV0DebXHqul7Vfnw6_9jaOqgif1uO28ZaumhmKHmw7B0-Frz3zOqJuZZSdw2c8ofgU10ALomcVkchuDdDx3Md9NLPtpBWKV4RqAx4p4Udc782TAmMxvjKNSWhj3Acseto59ZVGOtBI_-R6uTFT2t2JyQeh64h-77saFkTfbe1PsJh6nMXWfpMGg8RyZL78IX3N8z1aGxBQYPbWuIOEO80l3rMaRI7JCSjNQ5zLTQ8tXZnZdugqk_HUEhhkK0h-mN6HppUarOopJFwTfSokKHDp7Yrm0OHf01O0]]></Attach> * </Comments> * <StatuChangeEvent>10</StatuChangeEvent> * </ApprovalInfo> * </xml> */ }
public void RequestMessageEvent_OpenApprovalChangeTest() { var xml = @"<xml> <ToUserName>wwd08c8e7c775abaaa</ToUserName> <FromUserName>sys</FromUserName> <CreateTime>1527838022</CreateTime> <MsgType>event</MsgType> <Event>open_approval_change</Event> <AgentID>1</AgentID> <ApprovalInfo> <ThirdNo>thirdNoxxx</ThirdNo> <OpenSpName>付款</OpenSpName> <OpenTemplateId>1234567111</OpenTemplateId> <OpenSpStatus>1</OpenSpStatus> <ApplyTime>1527837645</ApplyTime> <ApplyUserName>jackiejjwu</ApplyUserName> <ApplyUserId>WuJunJie</ApplyUserId> <ApplyUserParty>产品部</ApplyUserParty> <ApplyUserImage>http://www.qq.com/xxx.png</ApplyUserImage> <ApprovalNodes> <ApprovalNode> <NodeStatus>1</NodeStatus> <NodeAttr>1</NodeAttr> <NodeType>1</NodeType> <Items> <Item> <ItemName>chauvetxiao</ItemName> <ItemUserid>XiaoWen</ItemUserid> <ItemParty>产品部</ItemParty> <ItemImage>http://www.qq.com/xxx.png</ItemImage> <ItemStatus>1</ItemStatus> <ItemSpeech></ItemSpeech> <ItemOpTime>0</ItemOpTime> </Item> <Item> <ItemName>chauvetxiao</ItemName> <ItemUserid>XiaoWen</ItemUserid> <ItemParty>产品部</ItemParty> <ItemImage>http://www.qq.com/xxx.png</ItemImage> <ItemStatus>1</ItemStatus> <ItemSpeech></ItemSpeech> <ItemOpTime>0</ItemOpTime> </Item> </Items> </ApprovalNode> <ApprovalNode> <NodeStatus>1</NodeStatus> <NodeAttr>1</NodeAttr> <NodeType>1</NodeType> <Items> <Item> <ItemName>chauvetxiao</ItemName> <ItemUserid>XiaoWen</ItemUserid> <ItemParty>产品部</ItemParty> <ItemImage>http://www.qq.com/xxx.png</ItemImage> <ItemStatus>1</ItemStatus> <ItemSpeech></ItemSpeech> <ItemOpTime>0</ItemOpTime> </Item> <Item> <ItemName>chauvetxiao2</ItemName> <ItemUserid>XiaoWen2</ItemUserid> <ItemParty>产品部2</ItemParty> <ItemImage>http://www.qq.com/xxx2.png</ItemImage> <ItemStatus>1</ItemStatus> <ItemSpeech></ItemSpeech> <ItemOpTime>0</ItemOpTime> </Item> </Items> </ApprovalNode> </ApprovalNodes> <NotifyNodes> <NotifyNode> <ItemName>jinhuiguo</ItemName> <ItemUserid>GuoJinHui</ItemUserid> <ItemParty>行政部</ItemParty> <ItemImage>http://www.qq.com/xxx.png</ItemImage> </NotifyNode> <NotifyNode> <ItemName>jinhuiguo</ItemName> <ItemUserid>GuoJinHui</ItemUserid> <ItemParty>行政部</ItemParty> <ItemImage>http://www.qq.com/xxx.png</ItemImage> </NotifyNode> </NotifyNodes> <ApproverStep>10</ApproverStep> </ApprovalInfo> </xml> "; var postModel = new PostModel() { Msg_Signature = "22cb38c34ae9ba4bdec938405b931ad3ece7e19e", Timestamp = "1644320363", Nonce = "1645172247", Token = "", EncodingAESKey = "", CorpId = "" }; var messageHandler = new CustomMessageHandlers(XDocument.Parse(xml), postModel, 10); messageHandler.Execute(); var responseMessage = messageHandler.ResponseDocument; Assert.IsNotNull(messageHandler.RequestMessage); Assert.AreEqual(RequestMsgType.Event, messageHandler.RequestMessage.MsgType); Assert.IsInstanceOfType(messageHandler.RequestMessage, typeof(RequestMessageEvent_OpenApprovalChange)); var requestMessage = messageHandler.RequestMessage as RequestMessageEvent_OpenApprovalChange; Console.WriteLine(requestMessage.ToJson(true)); Assert.AreEqual(Event.OPEN_APPROVAL_CHANGE, requestMessage.Event); Assert.IsNotNull(requestMessage.ApprovalInfo); Assert.AreEqual("thirdNoxxx", requestMessage.ApprovalInfo.ThirdNo); Assert.AreEqual((uint)1234567111, requestMessage.ApprovalInfo.OpenTemplateId); Assert.AreEqual("产品部", requestMessage.ApprovalInfo.ApplyUserParty); Assert.IsNotNull(requestMessage.ApprovalInfo.ApprovalNodes); Assert.IsTrue(requestMessage.ApprovalInfo.ApprovalNodes.Length == 2); var firstApprovalNode = requestMessage.ApprovalInfo.ApprovalNodes.First(); Assert.IsNotNull(firstApprovalNode.Items); Assert.IsTrue(firstApprovalNode.Items.Length == 2); var firstItem = firstApprovalNode.Items.First(); Assert.AreEqual("chauvetxiao", firstItem.ItemName); Assert.AreEqual("http://www.qq.com/xxx.png", firstItem.ItemImage); var secondApprovalNode = requestMessage.ApprovalInfo.ApprovalNodes[1]; Assert.IsNotNull(secondApprovalNode.Items); Assert.IsTrue(secondApprovalNode.Items.Length == 2); var secondItem = secondApprovalNode.Items[1]; Assert.AreEqual("chauvetxiao2", secondItem.ItemName); Assert.AreEqual("产品部2", secondItem.ItemParty); Assert.AreEqual("http://www.qq.com/xxx2.png", secondItem.ItemImage); Assert.IsNotNull(requestMessage.ApprovalInfo.NotifyNodes); Assert.IsTrue(requestMessage.ApprovalInfo.NotifyNodes.Length > 0); var firstNotifyNode = requestMessage.ApprovalInfo.NotifyNodes.First(); Assert.AreEqual("jinhuiguo", firstNotifyNode.ItemName); Assert.AreEqual(10, requestMessage.ApprovalInfo.ApproverStep); }