public void ContextTest() { var messageHandlers = new CustomerMessageHandlers(XDocument.Parse(xmlText)); messageHandlers.Execute(); var messageContext = messageHandlers.WeixinContext.GetMessageContext(messageHandlers.RequestMessage); Assert.IsTrue(messageContext.RequestMessages.Count > 0); Assert.IsNotNull(messageHandlers.CurrentMessageContext); Assert.AreEqual("olPjZjsXuQPJoV0HlruZkNzKc91E", messageHandlers.CurrentMessageContext.UserName); messageHandlers.WeixinContext.ExpireMinutes = 0;//马上过期 messageHandlers.Execute(); messageContext = messageHandlers.WeixinContext.GetMessageContext(messageHandlers.RequestMessage); Assert.AreEqual(0, messageContext.RequestMessages.Count); }
public void Event_LocationSelectTest() { var requestXML = @"<?xml version=""1.0"" encoding=""utf-8""?> <xml> <ToUserName>ToUserName</ToUserName> <FromUserName>FromUserName</FromUserName> <CreateTime>1444293582</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[location_select]]></Event> <EventKey><![CDATA[ZBZXC]]></EventKey> <SendLocationInfo><Location_X><![CDATA[31]]></Location_X> <Location_Y><![CDATA[121]]></Location_Y> <Scale><![CDATA[15]]></Scale> <Label><![CDATA[嘉兴市南湖区政府东栅街道办事处(中环南路南)]]></Label> <Poiname><![CDATA[南湖区富润路/中环南路(路口)旁]]></Poiname> </SendLocationInfo> </xml> "; var messageHandlers = new CustomerMessageHandlers(XDocument.Parse(requestXML)); Assert.IsNotNull(messageHandlers.RequestDocument); Assert.IsInstanceOfType(messageHandlers.RequestMessage, typeof(RequestMessageEvent_Location_Select)); Assert.AreEqual("ZBZXC", ((RequestMessageEvent_Location_Select)messageHandlers.RequestMessage).EventKey); messageHandlers.Execute(); Assert.IsNotNull(messageHandlers.ResponseMessage); Assert.IsNotNull(messageHandlers.ResponseDocument); Assert.IsFalse(messageHandlers.UsingEcryptMessage); //没有使用加密模式 Assert.IsFalse(messageHandlers.UsingCompatibilityModelEcryptMessage); //没有加密模式,所以也没有兼容模式 Console.WriteLine(messageHandlers.ResponseDocument.ToString()); Assert.AreEqual("ToUserName", messageHandlers.ResponseMessage.FromUserName); Assert.IsInstanceOfType(messageHandlers.ResponseMessage, typeof(ResponseMessageText)); Assert.AreEqual("OnEvent_LocationSelectRequest", ((ResponseMessageText)messageHandlers.ResponseMessage).Content); }
public void RestoreTest() { var messageHandlers = new CustomerMessageHandlers(XDocument.Parse(xmlText)); messageHandlers.Execute(); Assert.IsTrue(messageHandlers.WeixinContext.MessageCollection.Count > 0); messageHandlers.WeixinContext.Restore(); Assert.AreEqual(0, messageHandlers.WeixinContext.MessageCollection.Count); }
public void SyncTest() { //测试缓存同步 var messageHandlers1 = new CustomerMessageHandlers(XDocument.Parse(xmlText)); var messageHandlers2 = new CustomerMessageHandlers(XDocument.Parse(xmlText)); messageHandlers1.Execute(); Assert.AreEqual(messageHandlers1.WeixinContext.GetHashCode(), messageHandlers2.WeixinContext.GetHashCode()); }
public void DefaultResponseMessageTest() { var messageHandler = new CustomerMessageHandlers(XDocument.Parse(xmlLocation)); messageHandler.Execute(); //TestMessageHandlers中没有处理坐标信息的重写方法,将返回默认消息 Assert.IsInstanceOfType(messageHandler.ResponseMessage, typeof(ResponseMessageText)); Assert.AreEqual("您发送的消息类型暂未被识别。", ((ResponseMessageText)messageHandler.ResponseMessage).Content); }
public void MutipleThreadsTest() { // var weixinContext = MessageHandler <MessageContext <IRequestMessageBase, IResponseMessageBase> > .GlobalWeixinContext;//全局共享的WeixinContext上下文对象 weixinContext.Restore(); //多线程并发写入测试 List <Thread> threadList = new List <Thread>(); for (int i = 0; i < 200; i++) { var testContext = new TestContext(); var thread = new Thread(testContext.Run); thread.Name = i.ToString(); threadList.Add(thread); } threadList.ForEach(z => z.Start()); //开始所有线程 while (TestContext.FinishCount < 200) { } Assert.AreEqual(200 * 10, weixinContext.MessageCollection.Count); //用户数量 //判断消息上下是否自动移到底部 { var userName = "******"; var xml = string.Format(TestContext.RequestXmlFormat, userName); var messageHandlers = new CustomerMessageHandlers(XDocument.Parse(xml)); messageHandlers.Execute(); var lastQueueMessage = weixinContext.MessageQueue.Last(); Assert.AreEqual(userName, lastQueueMessage.UserName); } //判断超时信息是否被及时删除 { weixinContext.ExpireMinutes = 0.001; //设置过期时间(0.06秒) Thread.Sleep(100); weixinContext.GetLastRequestMessage("new"); //触发过期判断 Assert.AreEqual(1, weixinContext.MessageCollection.Count); //只删除剩下当前这一个 } }
public void Run() { for (int i = 0; i < 10; i++) { //模拟10个不同用户名 var userName = Thread.CurrentThread.Name + "_" + i; var xml = string.Format(RequestXmlFormat, userName); for (int j = 0; j < 2; j++) { //每个用户请求2次 var messageHandlers = new CustomerMessageHandlers(XDocument.Parse(xml)); messageHandlers.Execute(); } Thread.Sleep(5); } TestContext.FinishCount++; }
public void TestConstructorTest() { var requestMessage = new RequestMessageText() { Content = "Hi", CreateTime = DateTime.Now, FromUserName = "******", ToUserName = "******", MsgId = 123, }; var messageHandler = new CustomerMessageHandlers(requestMessage); messageHandler.Execute(); //TestMessageHandlers中没有处理坐标信息的重写方法,将返回默认消息 Assert.IsInstanceOfType(messageHandler.ResponseMessage, typeof(ResponseMessageText)); Assert.AreEqual("文字信息", ((ResponseMessageText)messageHandler.ResponseMessage).Content); }
public void TextMessageRequestTest() { var messageHandlers = new CustomerMessageHandlers(XDocument.Parse(xmlText)); Assert.IsNotNull(messageHandlers.RequestDocument); messageHandlers.Execute(); Assert.IsNotNull(messageHandlers.ResponseMessage); Assert.IsNotNull(messageHandlers.ResponseDocument); Assert.IsFalse(messageHandlers.UsingEcryptMessage); //没有使用加密模式 Assert.IsFalse(messageHandlers.UsingCompatibilityModelEcryptMessage); //没有加密模式,所以也没有兼容模式 Console.Write(messageHandlers.ResponseDocument.ToString()); Assert.AreEqual("gh_a96a4a619366", messageHandlers.ResponseMessage.FromUserName); var responseMessage = messageHandlers.ResponseMessage as ResponseMessageText; Assert.IsNotNull(responseMessage); Assert.AreEqual("文字信息", responseMessage.Content); }
public void OnEvent_MassSendJobFinishRequestTest() { var xml = @"<xml> <ToUserName><![CDATA[gh_3e8adccde292]]></ToUserName> <FromUserName><![CDATA[oR5Gjjl_eiZoUpGozMo7dbBJ362A]]></FromUserName> <CreateTime>1394524295</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[MASSSENDJOBFINISH]]></Event> <MsgID>1988</MsgID> <Status><![CDATA[sendsuccess]]></Status> <TotalCount>100</TotalCount> <FilterCount>80</FilterCount> <SentCount>75</SentCount> <ErrorCount>5</ErrorCount> </xml>"; var messageHandlers = new CustomerMessageHandlers(XDocument.Parse(xml)); messageHandlers.Execute(); Assert.IsNotNull(messageHandlers.ResponseMessage); Console.Write(messageHandlers.ResponseDocument); }