Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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>
             */
        }
Пример #7
0
        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);
        }