mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2026-02-14 20:16:23 +08:00
🎨 #1722 企业微信增加互联企业发送应用消息的接口,并重构消息相关类的包结构
This commit is contained in:
@@ -6,8 +6,8 @@ import me.chanjar.weixin.common.session.WxSessionManager;
|
||||
import me.chanjar.weixin.cp.message.WxCpMessageHandler;
|
||||
import me.chanjar.weixin.cp.message.WxCpMessageMatcher;
|
||||
import me.chanjar.weixin.cp.message.WxCpMessageRouter;
|
||||
import me.chanjar.weixin.cp.bean.WxCpXmlMessage;
|
||||
import me.chanjar.weixin.cp.bean.WxCpXmlOutMessage;
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpXmlMessage;
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.DataProvider;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
@@ -11,7 +11,7 @@ import me.chanjar.weixin.common.error.WxErrorException;
|
||||
import me.chanjar.weixin.cp.constant.WxCpConsts.AppChatMsgType;
|
||||
import me.chanjar.weixin.cp.api.ApiTestModule;
|
||||
import me.chanjar.weixin.cp.api.WxCpService;
|
||||
import me.chanjar.weixin.cp.bean.WxCpAppChatMessage;
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpAppChatMessage;
|
||||
import me.chanjar.weixin.cp.bean.WxCpChat;
|
||||
import me.chanjar.weixin.cp.bean.article.MpnewsArticle;
|
||||
import me.chanjar.weixin.cp.bean.article.NewArticle;
|
||||
|
||||
@@ -16,8 +16,6 @@ import java.io.InputStream;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static org.testng.Assert.*;
|
||||
|
||||
/**
|
||||
* 微信群机器人消息发送api 单元测试
|
||||
*
|
||||
@@ -62,7 +60,8 @@ public class WxCpGroupRobotServiceImplTest {
|
||||
|
||||
@Test
|
||||
public void testSendNews() throws WxErrorException {
|
||||
NewArticle article = new NewArticle("图文消息测试","hello world","http://www.baidu.com","http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png");
|
||||
NewArticle article = new NewArticle("图文消息测试", "hello world", "http://www.baidu.com",
|
||||
"http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png", null);
|
||||
robotService.sendNews(Stream.of(article).collect(Collectors.toList()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,8 +9,9 @@ import me.chanjar.weixin.common.error.WxErrorException;
|
||||
import me.chanjar.weixin.cp.api.ApiTestModule;
|
||||
import me.chanjar.weixin.cp.api.ApiTestModuleWithMockServer;
|
||||
import me.chanjar.weixin.cp.api.WxCpService;
|
||||
import me.chanjar.weixin.cp.bean.WxCpMessage;
|
||||
import me.chanjar.weixin.cp.bean.WxCpMessageSendResult;
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpLinkedCorpMessage;
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpMessage;
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpMessageSendResult;
|
||||
import org.testng.annotations.AfterTest;
|
||||
import org.testng.annotations.BeforeTest;
|
||||
import org.testng.annotations.Guice;
|
||||
@@ -57,7 +58,7 @@ public class WxCpMessageServiceImplTest {
|
||||
message.setToUser(configStorage.getUserId());
|
||||
message.setContent("欢迎欢迎,热烈欢迎\n换行测试\n超链接:<a href=\"http://www.baidu.com\">Hello World</a>");
|
||||
|
||||
WxCpMessageSendResult messageSendResult = this.wxService.getMessageService().messageSend(message);
|
||||
WxCpMessageSendResult messageSendResult = this.wxService.getMessageService().send(message);
|
||||
assertNotNull(messageSendResult);
|
||||
System.out.println(messageSendResult);
|
||||
System.out.println(messageSendResult.getInvalidPartyList());
|
||||
@@ -74,7 +75,7 @@ public class WxCpMessageServiceImplTest {
|
||||
.content("欢迎欢迎,热烈欢迎\n换行测试\n超链接:<a href=\"http://www.baidu.com\">Hello World</a>")
|
||||
.build();
|
||||
|
||||
WxCpMessageSendResult messageSendResult = this.wxService.getMessageService().messageSend(message);
|
||||
WxCpMessageSendResult messageSendResult = this.wxService.getMessageService().send(message);
|
||||
assertNotNull(messageSendResult);
|
||||
System.out.println(messageSendResult);
|
||||
System.out.println(messageSendResult.getInvalidPartyList());
|
||||
@@ -102,7 +103,7 @@ public class WxCpMessageServiceImplTest {
|
||||
" >如需修改会议信息,请点击:[修改会议信息](https://work.weixin.qq.com)")
|
||||
.build();
|
||||
|
||||
WxCpMessageSendResult messageSendResult = this.wxService.getMessageService().messageSend(message);
|
||||
WxCpMessageSendResult messageSendResult = this.wxService.getMessageService().send(message);
|
||||
assertNotNull(messageSendResult);
|
||||
System.out.println(messageSendResult);
|
||||
System.out.println(messageSendResult.getInvalidPartyList());
|
||||
@@ -121,7 +122,7 @@ public class WxCpMessageServiceImplTest {
|
||||
.title("领奖通知")
|
||||
.build();
|
||||
|
||||
WxCpMessageSendResult messageSendResult = this.wxService.getMessageService().messageSend(message);
|
||||
WxCpMessageSendResult messageSendResult = this.wxService.getMessageService().send(message);
|
||||
assertNotNull(messageSendResult);
|
||||
System.out.println(messageSendResult);
|
||||
System.out.println(messageSendResult.getInvalidPartyList());
|
||||
@@ -144,11 +145,20 @@ public class WxCpMessageServiceImplTest {
|
||||
"会议时间", "2018年8月1日 09:00-09:30"))
|
||||
.build();
|
||||
|
||||
WxCpMessageSendResult messageSendResult = this.wxService.getMessageService().messageSend(message);
|
||||
WxCpMessageSendResult messageSendResult = this.wxService.getMessageService().send(message);
|
||||
assertNotNull(messageSendResult);
|
||||
System.out.println(messageSendResult);
|
||||
System.out.println(messageSendResult.getInvalidPartyList());
|
||||
System.out.println(messageSendResult.getInvalidUserList());
|
||||
System.out.println(messageSendResult.getInvalidTagList());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLinkedCorpMessageSend() throws WxErrorException {
|
||||
this.wxService.getMessageService().sendLinkedCorpMessage(WxCpLinkedCorpMessage.builder()
|
||||
.msgType(WxConsts.KefuMsgType.TEXT)
|
||||
.toUsers(new String[]{configStorage.getUserId()})
|
||||
.content("欢迎欢迎,热烈欢迎\n换行测试\n超链接:<a href=\"http://www.baidu.com\">Hello World</a>")
|
||||
.build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@ import com.google.inject.Inject;
|
||||
import me.chanjar.weixin.common.error.WxErrorException;
|
||||
import me.chanjar.weixin.cp.api.ApiTestModule;
|
||||
import me.chanjar.weixin.cp.api.WxCpService;
|
||||
import me.chanjar.weixin.cp.bean.WxCpMessage;
|
||||
import me.chanjar.weixin.cp.bean.WxCpMessageSendResult;
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpMessage;
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpMessageSendResult;
|
||||
import me.chanjar.weixin.cp.bean.taskcard.TaskCardButton;
|
||||
import org.testng.annotations.Guice;
|
||||
import org.testng.annotations.Test;
|
||||
@@ -49,7 +49,7 @@ public class WxCpTaskCardServiceImplTest {
|
||||
.buttons(Arrays.asList(btn1, btn2))
|
||||
.build();
|
||||
|
||||
WxCpMessageSendResult messageSendResult = this.wxCpService.getMessageService().messageSend(message);
|
||||
WxCpMessageSendResult messageSendResult = this.wxCpService.getMessageService().send(message);
|
||||
assertNotNull(messageSendResult);
|
||||
System.out.println(messageSendResult);
|
||||
System.out.println(messageSendResult.getInvalidPartyList());
|
||||
|
||||
@@ -0,0 +1,374 @@
|
||||
package me.chanjar.weixin.cp.bean.message;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.Lists;
|
||||
import me.chanjar.weixin.common.api.WxConsts;
|
||||
import me.chanjar.weixin.common.util.json.GsonParser;
|
||||
import me.chanjar.weixin.cp.bean.article.MpnewsArticle;
|
||||
import me.chanjar.weixin.cp.bean.article.NewArticle;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import static me.chanjar.weixin.common.api.WxConsts.*;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* 测试用例中的json参考 https://work.weixin.qq.com/api/doc/90000/90135/90250
|
||||
*
|
||||
* @author <a href="https://github.com/binarywang">Binary Wang</a>
|
||||
* @date 2020-08-30
|
||||
*/
|
||||
public class WxCpLinkedCorpMessageTest {
|
||||
|
||||
@Test
|
||||
public void testToJson_text() {
|
||||
WxCpLinkedCorpMessage message = WxCpLinkedCorpMessage.builder()
|
||||
.msgType(KefuMsgType.TEXT)
|
||||
.toUsers(new String[]{"userid1", "userid2", "CorpId1/userid1", "CorpId2/userid2"})
|
||||
.toParties(new String[]{"partyid1", "partyid2", "LinkedId1/partyid1", "LinkedId2/partyid2"})
|
||||
.toTags(new String[]{"tagid1", "tagid2"})
|
||||
.agentId(1)
|
||||
.isToAll(false)
|
||||
.isSafe(false)
|
||||
.content("你的快递已到,请携带工卡前往邮件中心领取。\n出发前可查看<a href=\"http://work.weixin.qq.com\">邮件中心视频实况</a>,聪明避开排队。")
|
||||
.build();
|
||||
|
||||
final String json = message.toJson();
|
||||
String expectedJson = "{\n" +
|
||||
" \"touser\" : [\"userid1\",\"userid2\",\"CorpId1/userid1\",\"CorpId2/userid2\"],\n" +
|
||||
" \"toparty\" : [\"partyid1\",\"partyid2\",\"LinkedId1/partyid1\",\"LinkedId2/partyid2\"],\n" +
|
||||
" \"totag\" : [\"tagid1\",\"tagid2\"],\n" +
|
||||
" \"toall\" : 0,\n" +
|
||||
" \"msgtype\" : \"text\",\n" +
|
||||
" \"agentid\" : 1,\n" +
|
||||
" \"text\" : {\n" +
|
||||
" \"content\" : \"你的快递已到,请携带工卡前往邮件中心领取。\\n出发前可查看<a href=\\\"http://work.weixin.qq.com\\\">邮件中心视频实况</a>,聪明避开排队。\"\n" +
|
||||
" },\n" +
|
||||
" \"safe\":0\n" +
|
||||
"}";
|
||||
|
||||
assertThat(json).isEqualTo(GsonParser.parse(expectedJson).toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testToJson_image() {
|
||||
WxCpLinkedCorpMessage message = WxCpLinkedCorpMessage.builder()
|
||||
.msgType(KefuMsgType.IMAGE)
|
||||
.toUsers(new String[]{"userid1", "userid2", "CorpId1/userid1", "CorpId2/userid2"})
|
||||
.toParties(new String[]{"partyid1", "partyid2", "LinkedId1/partyid1", "LinkedId2/partyid2"})
|
||||
.toTags(new String[]{"tagid1", "tagid2"})
|
||||
.agentId(1)
|
||||
.isToAll(false)
|
||||
.isSafe(false)
|
||||
.mediaId("MEDIA_ID")
|
||||
.build();
|
||||
|
||||
final String json = message.toJson();
|
||||
String expectedJson = "{\n" +
|
||||
" \"touser\" : [\"userid1\",\"userid2\",\"CorpId1/userid1\",\"CorpId2/userid2\"],\n" +
|
||||
" \"toparty\" : [\"partyid1\",\"partyid2\",\"LinkedId1/partyid1\",\"LinkedId2/partyid2\"],\n" +
|
||||
" \"totag\" : [\"tagid1\",\"tagid2\"],\n" +
|
||||
" \"toall\" : 0,\n" +
|
||||
" \"msgtype\" : \"image\",\n" +
|
||||
" \"agentid\" : 1,\n" +
|
||||
" \"image\" : {\n" +
|
||||
" \"media_id\" : \"MEDIA_ID\"\n" +
|
||||
" },\n" +
|
||||
" \"safe\":0\n" +
|
||||
"}";
|
||||
|
||||
assertThat(json).isEqualTo(GsonParser.parse(expectedJson).toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testToJson_video() {
|
||||
WxCpLinkedCorpMessage message = WxCpLinkedCorpMessage.builder()
|
||||
.msgType(KefuMsgType.VIDEO)
|
||||
.toUsers(new String[]{"userid1", "userid2", "CorpId1/userid1", "CorpId2/userid2"})
|
||||
.toParties(new String[]{"partyid1", "partyid2", "LinkedId1/partyid1", "LinkedId2/partyid2"})
|
||||
.toTags(new String[]{"tagid1", "tagid2"})
|
||||
.agentId(1)
|
||||
.isToAll(false)
|
||||
.isSafe(false)
|
||||
.mediaId("MEDIA_ID")
|
||||
.title("Title")
|
||||
.description("Description")
|
||||
.build();
|
||||
|
||||
final String json = message.toJson();
|
||||
String expectedJson = "{\n" +
|
||||
" \"touser\" : [\"userid1\",\"userid2\",\"CorpId1/userid1\",\"CorpId2/userid2\"],\n" +
|
||||
" \"toparty\" : [\"partyid1\",\"partyid2\",\"LinkedId1/partyid1\",\"LinkedId2/partyid2\"],\n" +
|
||||
" \"totag\" : [\"tagid1\",\"tagid2\"],\n" +
|
||||
" \"toall\" : 0,\n" +
|
||||
" \"msgtype\" : \"video\",\n" +
|
||||
" \"agentid\" : 1,\n" +
|
||||
" \"video\" : {\n" +
|
||||
" \"media_id\" : \"MEDIA_ID\",\n" +
|
||||
" \"title\" : \"Title\",\n" +
|
||||
" \"description\" : \"Description\"\n" +
|
||||
" },\n" +
|
||||
" \"safe\":0\n" +
|
||||
"}\n";
|
||||
|
||||
assertThat(json).isEqualTo(GsonParser.parse(expectedJson).toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testToJson_file() {
|
||||
WxCpLinkedCorpMessage message = WxCpLinkedCorpMessage.builder()
|
||||
.msgType(KefuMsgType.FILE)
|
||||
.toUsers(new String[]{"userid1", "userid2", "CorpId1/userid1", "CorpId2/userid2"})
|
||||
.toParties(new String[]{"partyid1", "partyid2", "LinkedId1/partyid1", "LinkedId2/partyid2"})
|
||||
.toTags(new String[]{"tagid1", "tagid2"})
|
||||
.agentId(1)
|
||||
.isToAll(false)
|
||||
.isSafe(false)
|
||||
.mediaId("1Yv-zXfHjSjU-7LH-GwtYqDGS-zz6w22KmWAT5COgP7o")
|
||||
.build();
|
||||
|
||||
final String json = message.toJson();
|
||||
String expectedJson = "{\n" +
|
||||
" \"touser\" : [\"userid1\",\"userid2\",\"CorpId1/userid1\",\"CorpId2/userid2\"],\n" +
|
||||
" \"toparty\" : [\"partyid1\",\"partyid2\",\"LinkedId1/partyid1\",\"LinkedId2/partyid2\"],\n" +
|
||||
" \"totag\" : [\"tagid1\",\"tagid2\"],\n" +
|
||||
" \"toall\" : 0,\n" +
|
||||
" \"msgtype\" : \"file\",\n" +
|
||||
" \"agentid\" : 1,\n" +
|
||||
" \"file\" : {\n" +
|
||||
" \"media_id\" : \"1Yv-zXfHjSjU-7LH-GwtYqDGS-zz6w22KmWAT5COgP7o\"\n" +
|
||||
" },\n" +
|
||||
" \"safe\":0\n" +
|
||||
"}\n";
|
||||
|
||||
assertThat(json).isEqualTo(GsonParser.parse(expectedJson).toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testToJson_textCard() {
|
||||
WxCpLinkedCorpMessage message = WxCpLinkedCorpMessage.builder()
|
||||
.msgType(KefuMsgType.TEXTCARD)
|
||||
.toUsers(new String[]{"userid1", "userid2", "CorpId1/userid1", "CorpId2/userid2"})
|
||||
.toParties(new String[]{"partyid1", "partyid2", "LinkedId1/partyid1", "LinkedId2/partyid2"})
|
||||
.toTags(new String[]{"tagid1", "tagid2"})
|
||||
.agentId(1)
|
||||
.isToAll(false)
|
||||
.title("领奖通知")
|
||||
.description("<div class=\"gray\">2016年9月26日</div> <div class=\"normal\">恭喜你抽中iPhone 7一台,领奖码:xxxx</div><div class=\"highlight\">请于2016年10月10日前联系行政同事领取</div>")
|
||||
.url("URL")
|
||||
.btnTxt("更多")
|
||||
.build();
|
||||
|
||||
final String json = message.toJson();
|
||||
String expectedJson = "{\n" +
|
||||
" \"touser\" : [\"userid1\",\"userid2\",\"CorpId1/userid1\",\"CorpId2/userid2\"],\n" +
|
||||
" \"toparty\" : [\"partyid1\",\"partyid2\",\"LinkedId1/partyid1\",\"LinkedId2/partyid2\"],\n" +
|
||||
" \"totag\" : [\"tagid1\",\"tagid2\"],\n" +
|
||||
" \"toall\" : 0,\n" +
|
||||
" \"msgtype\" : \"textcard\",\n" +
|
||||
" \"agentid\" : 1,\n" +
|
||||
" \"textcard\" : {\n" +
|
||||
" \"title\" : \"领奖通知\",\n" +
|
||||
" \"description\" : \"<div class=\\\"gray\\\">2016年9月26日</div> <div class=\\\"normal\\\">恭喜你抽中iPhone 7一台,领奖码:xxxx</div><div class=\\\"highlight\\\">请于2016年10月10日前联系行政同事领取</div>\",\n" +
|
||||
" \"url\" : \"URL\",\n" +
|
||||
" \"btntxt\":\"更多\"\n" +
|
||||
" }\n" +
|
||||
"}\n";
|
||||
|
||||
assertThat(json).isEqualTo(GsonParser.parse(expectedJson).toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testToJson_news() {
|
||||
WxCpLinkedCorpMessage message = WxCpLinkedCorpMessage.builder()
|
||||
.msgType(KefuMsgType.NEWS)
|
||||
.toUsers(new String[]{"userid1", "userid2", "CorpId1/userid1", "CorpId2/userid2"})
|
||||
.toParties(new String[]{"partyid1", "partyid2", "LinkedId1/partyid1", "LinkedId2/partyid2"})
|
||||
.toTags(new String[]{"tagid1", "tagid2"})
|
||||
.agentId(1)
|
||||
.isToAll(false)
|
||||
.articles(Lists.newArrayList(NewArticle.builder()
|
||||
.title("中秋节礼品领取")
|
||||
.description("今年中秋节公司有豪礼相送")
|
||||
.url("URL")
|
||||
.picUrl("http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png")
|
||||
.btnText("更多")
|
||||
.build()))
|
||||
.build();
|
||||
|
||||
final String json = message.toJson();
|
||||
String expectedJson = "{\n" +
|
||||
" \"touser\" : [\"userid1\",\"userid2\",\"CorpId1/userid1\",\"CorpId2/userid2\"],\n" +
|
||||
" \"toparty\" : [\"partyid1\",\"partyid2\",\"LinkedId1/partyid1\",\"LinkedId2/partyid2\"],\n" +
|
||||
" \"totag\" : [\"tagid1\",\"tagid2\"],\n" +
|
||||
" \"toall\" : 0,\n" +
|
||||
" \"msgtype\" : \"news\",\n" +
|
||||
" \"agentid\" : 1,\n" +
|
||||
" \"news\" : {\n" +
|
||||
" \"articles\" : [\n" +
|
||||
" {\n" +
|
||||
" \"title\" : \"中秋节礼品领取\",\n" +
|
||||
" \"description\" : \"今年中秋节公司有豪礼相送\",\n" +
|
||||
" \"url\" : \"URL\",\n" +
|
||||
" \"picurl\" : \"http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png\",\n" +
|
||||
" \"btntxt\":\"更多\"\n" +
|
||||
" }\n" +
|
||||
" ]\n" +
|
||||
" }\n" +
|
||||
"}\n";
|
||||
|
||||
assertThat(json).isEqualTo(GsonParser.parse(expectedJson).toString());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testToJson_mpnews() {
|
||||
WxCpLinkedCorpMessage message = WxCpLinkedCorpMessage.builder()
|
||||
.msgType(KefuMsgType.MPNEWS)
|
||||
.toUsers(new String[]{"userid1", "userid2", "CorpId1/userid1", "CorpId2/userid2"})
|
||||
.toParties(new String[]{"partyid1", "partyid2", "LinkedId1/partyid1", "LinkedId2/partyid2"})
|
||||
.toTags(new String[]{"tagid1", "tagid2"})
|
||||
.agentId(1)
|
||||
.isToAll(false)
|
||||
.isSafe(false)
|
||||
.mpNewsArticles(Lists.newArrayList(MpnewsArticle.newBuilder()
|
||||
.title("Title")
|
||||
.thumbMediaId("MEDIA_ID")
|
||||
.author("Author")
|
||||
.contentSourceUrl("URL")
|
||||
.content("Content")
|
||||
.digest("Digest description")
|
||||
.build()))
|
||||
.build();
|
||||
|
||||
final String json = message.toJson();
|
||||
String expectedJson = "{\n" +
|
||||
" \"touser\" : [\"userid1\",\"userid2\",\"CorpId1/userid1\",\"CorpId2/userid2\"],\n" +
|
||||
" \"toparty\" : [\"partyid1\",\"partyid2\",\"LinkedId1/partyid1\",\"LinkedId2/partyid2\"],\n" +
|
||||
" \"totag\" : [\"tagid1\",\"tagid2\"],\n" +
|
||||
" \"toall\" : 0,\n" +
|
||||
" \"msgtype\" : \"mpnews\",\n" +
|
||||
" \"agentid\" : 1,\n" +
|
||||
" \"mpnews\" : {\n" +
|
||||
" \"articles\":[\n" +
|
||||
" {\n" +
|
||||
" \"title\": \"Title\", \n" +
|
||||
" \"thumb_media_id\": \"MEDIA_ID\",\n" +
|
||||
" \"author\": \"Author\",\n" +
|
||||
" \"content_source_url\": \"URL\",\n" +
|
||||
" \"content\": \"Content\",\n" +
|
||||
" \"digest\": \"Digest description\"\n" +
|
||||
" }\n" +
|
||||
" ]\n" +
|
||||
" },\n" +
|
||||
" \"safe\":0\n" +
|
||||
"}\n";
|
||||
|
||||
assertThat(json).isEqualTo(GsonParser.parse(expectedJson).toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testToJson_markdown() {
|
||||
WxCpLinkedCorpMessage message = WxCpLinkedCorpMessage.builder()
|
||||
.msgType(KefuMsgType.MARKDOWN)
|
||||
.toUsers(new String[]{"userid1", "userid2", "CorpId1/userid1", "CorpId2/userid2"})
|
||||
.toParties(new String[]{"partyid1", "partyid2", "LinkedId1/partyid1", "LinkedId2/partyid2"})
|
||||
.toTags(new String[]{"tagid1", "tagid2"})
|
||||
.agentId(1)
|
||||
.isToAll(false)
|
||||
.content("您的会议室已经预定,稍后会同步到`邮箱`\n" +
|
||||
" >**事项详情**\n" +
|
||||
" >事 项:<font color=\"info\">开会</font>\n" +
|
||||
" >组织者:@miglioguan\n" +
|
||||
" >参与者:@miglioguan、@kunliu、@jamdeezhou、@kanexiong、@kisonwang\n" +
|
||||
" >\n" +
|
||||
" >会议室:<font color=\"info\">广州TIT 1楼 301</font>\n" +
|
||||
" >日 期:<font color=\"warning\">2018年5月18日</font>\n" +
|
||||
" >时 间:<font color=\"comment\">上午9:00-11:00</font>\n" +
|
||||
" >\n" +
|
||||
" >请准时参加会议。\n" +
|
||||
" >\n" +
|
||||
" >如需修改会议信息,请点击:[修改会议信息](https://work.weixin.qq.com)")
|
||||
.build();
|
||||
|
||||
final String json = message.toJson();
|
||||
String expectedJson = "{\n" +
|
||||
" \"touser\" : [\"userid1\",\"userid2\",\"CorpId1/userid1\",\"CorpId2/userid2\"],\n" +
|
||||
" \"toparty\" : [\"partyid1\",\"partyid2\",\"LinkedId1/partyid1\",\"LinkedId2/partyid2\"],\n" +
|
||||
" \"totag\" : [\"tagid1\",\"tagid2\"],\n" +
|
||||
" \"toall\" : 0,\n" +
|
||||
" \"msgtype\" : \"markdown\",\n" +
|
||||
" \"agentid\" : 1,\n" +
|
||||
" \"markdown\": {\n" +
|
||||
" \"content\": \"您的会议室已经预定,稍后会同步到`邮箱`\n" +
|
||||
" >**事项详情**\n" +
|
||||
" >事 项:<font color=\\\"info\\\">开会</font>\n" +
|
||||
" >组织者:@miglioguan\n" +
|
||||
" >参与者:@miglioguan、@kunliu、@jamdeezhou、@kanexiong、@kisonwang\n" +
|
||||
" >\n" +
|
||||
" >会议室:<font color=\\\"info\\\">广州TIT 1楼 301</font>\n" +
|
||||
" >日 期:<font color=\\\"warning\\\">2018年5月18日</font>\n" +
|
||||
" >时 间:<font color=\\\"comment\\\">上午9:00-11:00</font>\n" +
|
||||
" >\n" +
|
||||
" >请准时参加会议。\n" +
|
||||
" >\n" +
|
||||
" >如需修改会议信息,请点击:[修改会议信息](https://work.weixin.qq.com)\"\n" +
|
||||
" }\n" +
|
||||
"}\n";
|
||||
|
||||
assertThat(json).isEqualTo(GsonParser.parse(expectedJson).toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testToJson_miniProgramNotice() {
|
||||
WxCpLinkedCorpMessage message = WxCpLinkedCorpMessage.builder()
|
||||
.msgType(KefuMsgType.MINIPROGRAM_NOTICE)
|
||||
.toUsers(new String[]{"userid1", "userid2", "CorpId1/userid1", "CorpId2/userid2"})
|
||||
.toParties(new String[]{"partyid1", "partyid2", "LinkedId1/partyid1", "LinkedId2/partyid2"})
|
||||
.toTags(new String[]{"tagid1", "tagid2"})
|
||||
.emphasisFirstItem(true)
|
||||
.description("4月27日 16:16")
|
||||
.title("会议室预订成功通知")
|
||||
.appId("wx123123123123123")
|
||||
.page("pages/index?userid=zhangsan&orderid=123123123")
|
||||
.contentItems(ImmutableMap.of("会议室","402",
|
||||
"会议地点","广州TIT-402会议室",
|
||||
"会议时间","2018年8月1日 09:00-09:30",
|
||||
"参与人员","周剑轩"))
|
||||
.build();
|
||||
|
||||
final String json = message.toJson();
|
||||
String expectedJson = "{\n" +
|
||||
" \"touser\" : [\"userid1\",\"userid2\",\"CorpId1/userid1\",\"CorpId2/userid2\"],\n" +
|
||||
" \"toparty\" : [\"partyid1\",\"partyid2\",\"LinkedId1/partyid1\",\"LinkedId2/partyid2\"],\n" +
|
||||
" \"totag\" : [\"tagid1\",\"tagid2\"],\n" +
|
||||
" \"msgtype\" : \"miniprogram_notice\",\n" +
|
||||
" \"miniprogram_notice\" : {\n" +
|
||||
" \"appid\": \"wx123123123123123\",\n" +
|
||||
" \"page\": \"pages/index?userid=zhangsan&orderid=123123123\",\n" +
|
||||
" \"title\": \"会议室预订成功通知\",\n" +
|
||||
" \"description\": \"4月27日 16:16\",\n" +
|
||||
" \"emphasis_first_item\": true,\n" +
|
||||
" \"content_item\": [\n" +
|
||||
" {\n" +
|
||||
" \"key\": \"会议室\",\n" +
|
||||
" \"value\": \"402\"\n" +
|
||||
" },\n" +
|
||||
" {\n" +
|
||||
" \"key\": \"会议地点\",\n" +
|
||||
" \"value\": \"广州TIT-402会议室\"\n" +
|
||||
" },\n" +
|
||||
" {\n" +
|
||||
" \"key\": \"会议时间\",\n" +
|
||||
" \"value\": \"2018年8月1日 09:00-09:30\"\n" +
|
||||
" },\n" +
|
||||
" {\n" +
|
||||
" \"key\": \"参与人员\",\n" +
|
||||
" \"value\": \"周剑轩\"\n" +
|
||||
" }\n" +
|
||||
" ]\n" +
|
||||
" }\n" +
|
||||
"}\n";
|
||||
|
||||
assertThat(json).isEqualTo(GsonParser.parse(expectedJson).toString());
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,8 @@
|
||||
package me.chanjar.weixin.cp.bean;
|
||||
package me.chanjar.weixin.cp.bean.message;
|
||||
|
||||
import me.chanjar.weixin.cp.bean.article.MpnewsArticle;
|
||||
import me.chanjar.weixin.cp.bean.article.NewArticle;
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpMessage;
|
||||
import me.chanjar.weixin.cp.bean.taskcard.TaskCardButton;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package me.chanjar.weixin.cp.bean;
|
||||
package me.chanjar.weixin.cp.bean.message;
|
||||
|
||||
import me.chanjar.weixin.common.api.WxConsts;
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpXmlMessage;
|
||||
import me.chanjar.weixin.cp.constant.WxCpConsts;
|
||||
import me.chanjar.weixin.cp.util.xml.XStreamTransformer;
|
||||
import org.testng.annotations.Test;
|
||||
@@ -1,5 +1,7 @@
|
||||
package me.chanjar.weixin.cp.bean;
|
||||
package me.chanjar.weixin.cp.bean.message;
|
||||
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpXmlOutImageMessage;
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package me.chanjar.weixin.cp.bean;
|
||||
package me.chanjar.weixin.cp.bean.message;
|
||||
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage;
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpXmlOutNewsMessage;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package me.chanjar.weixin.cp.bean;
|
||||
package me.chanjar.weixin.cp.bean.message;
|
||||
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage;
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpXmlOutTextMessage;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package me.chanjar.weixin.cp.bean;
|
||||
package me.chanjar.weixin.cp.bean.message;
|
||||
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage;
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpXmlOutVideoMessage;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package me.chanjar.weixin.cp.bean;
|
||||
package me.chanjar.weixin.cp.bean.message;
|
||||
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage;
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpXmlOutVoiceMessage;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
@@ -13,9 +13,9 @@ import me.chanjar.weixin.common.session.WxSessionManager;
|
||||
import me.chanjar.weixin.cp.constant.WxCpConsts;
|
||||
import me.chanjar.weixin.cp.api.WxCpService;
|
||||
import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl;
|
||||
import me.chanjar.weixin.cp.bean.WxCpXmlMessage;
|
||||
import me.chanjar.weixin.cp.bean.WxCpXmlOutMessage;
|
||||
import me.chanjar.weixin.cp.bean.WxCpXmlOutTextMessage;
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpXmlMessage;
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage;
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpXmlOutTextMessage;
|
||||
import me.chanjar.weixin.cp.config.WxCpConfigStorage;
|
||||
import me.chanjar.weixin.cp.message.WxCpMessageHandler;
|
||||
import me.chanjar.weixin.cp.message.WxCpMessageRouter;
|
||||
|
||||
@@ -3,8 +3,8 @@ package me.chanjar.weixin.cp.demo;
|
||||
import me.chanjar.weixin.cp.config.WxCpConfigStorage;
|
||||
import me.chanjar.weixin.cp.message.WxCpMessageRouter;
|
||||
import me.chanjar.weixin.cp.api.WxCpService;
|
||||
import me.chanjar.weixin.cp.bean.WxCpXmlMessage;
|
||||
import me.chanjar.weixin.cp.bean.WxCpXmlOutMessage;
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpXmlMessage;
|
||||
import me.chanjar.weixin.cp.bean.message.WxCpXmlOutMessage;
|
||||
import me.chanjar.weixin.cp.util.crypto.WxCpCryptUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
|
||||
@@ -14,5 +14,13 @@
|
||||
"response": {
|
||||
"text": "{\"errcode\":0,\"errmsg\":\"ok\",\"invaliduser\":\"\"}"
|
||||
}
|
||||
},
|
||||
{
|
||||
"request": {
|
||||
"uri": "/cgi-bin/linkedcorp/message/send"
|
||||
},
|
||||
"response": {
|
||||
"text": "{\"errcode\":0,\"errmsg\":\"ok\",\"invaliduser\":\"\"}"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -12,13 +12,13 @@
|
||||
|
||||
<test name="Bean_Test">
|
||||
<classes>
|
||||
<class name="me.chanjar.weixin.cp.bean.WxCpMessageTest"/>
|
||||
<class name="me.chanjar.weixin.cp.bean.WxCpXmlMessageTest"/>
|
||||
<class name="me.chanjar.weixin.cp.bean.WxCpXmlOutImageMessageTest"/>
|
||||
<class name="me.chanjar.weixin.cp.bean.WxCpXmlOutNewsMessageTest"/>
|
||||
<class name="me.chanjar.weixin.cp.bean.WxCpXmlOutVideoMessageTest"/>
|
||||
<class name="me.chanjar.weixin.cp.bean.WxCpXmlOutVoiceMessageTest"/>
|
||||
<class name="me.chanjar.weixin.cp.bean.WxCpXmlOutTextMessageTest"/>
|
||||
<class name="me.chanjar.weixin.cp.bean.message.WxCpMessageTest"/>
|
||||
<class name="me.chanjar.weixin.cp.bean.message.WxCpXmlMessageTest"/>
|
||||
<class name="me.chanjar.weixin.cp.bean.message.WxCpXmlOutImageMessageTest"/>
|
||||
<class name="me.chanjar.weixin.cp.bean.message.WxCpXmlOutNewsMessageTest"/>
|
||||
<class name="me.chanjar.weixin.cp.bean.message.WxCpXmlOutVideoMessageTest"/>
|
||||
<class name="me.chanjar.weixin.cp.bean.message.WxCpXmlOutVoiceMessageTest"/>
|
||||
<class name="me.chanjar.weixin.cp.bean.message.WxCpXmlOutTextMessageTest"/>
|
||||
</classes>
|
||||
</test>
|
||||
</suite>
|
||||
|
||||
Reference in New Issue
Block a user