dev --- 3.8.0.A版本, openProject引用 ; formao-live --- 3.7.0.B 版本, formallProject引用
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.

168 rivejä
7.0 KiB

  1. package chanjarster.weixin.api;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import org.testng.Assert;
  5. import org.testng.annotations.DataProvider;
  6. import org.testng.annotations.Guice;
  7. import org.testng.annotations.Test;
  8. import chanjarster.weixin.api.ApiTestModule.WxXmlConfigStorage;
  9. import chanjarster.weixin.bean.WxMassGroupMessage;
  10. import chanjarster.weixin.bean.WxMassNews;
  11. import chanjarster.weixin.bean.WxMassNews.WxMassNewsArticle;
  12. import chanjarster.weixin.bean.WxMassOpenIdsMessage;
  13. import chanjarster.weixin.bean.WxMassVideo;
  14. import chanjarster.weixin.bean.result.WxMassSendResult;
  15. import chanjarster.weixin.bean.result.WxMassUploadResult;
  16. import chanjarster.weixin.bean.result.WxMediaUploadResult;
  17. import chanjarster.weixin.exception.WxErrorException;
  18. import com.google.inject.Inject;
  19. /**
  20. * 测试群发消息
  21. * @author chanjarster
  22. *
  23. */
  24. @Test(groups = "massAPI", dependsOnGroups = { "baseAPI", "mediaAPI", "groupAPI"})
  25. @Guice(modules = ApiTestModule.class)
  26. public class WxMassMessageAPITest {
  27. @Inject
  28. protected WxServiceImpl wxService;
  29. @Test
  30. public void testTextMassOpenIdsMessageSend() throws WxErrorException {
  31. // 发送群发消息
  32. WxXmlConfigStorage configProvider = (WxXmlConfigStorage) wxService.wxConfigStorage;
  33. WxMassOpenIdsMessage massMessage = new WxMassOpenIdsMessage();
  34. massMessage.setMsgtype(WxConsts.MASS_MSG_TEXT);
  35. massMessage.setContent("测试群发消息\n欢迎欢迎,热烈欢迎\n换行测试\n超链接:<a href=\"http://www.baidu.com\">Hello World</a>");
  36. massMessage.getTouser().add(configProvider.getOpenId());
  37. WxMassSendResult massResult = wxService.massOpenIdsMessageSend(massMessage);
  38. Assert.assertNotNull(massResult);
  39. Assert.assertNotNull(massResult.getMsg_id());
  40. }
  41. @Test(dataProvider="massMessages")
  42. public void testMediaMassOpenIdsMessageSend(String massMsgType, String mediaId) throws WxErrorException, IOException {
  43. // 发送群发消息
  44. WxXmlConfigStorage configProvider = (WxXmlConfigStorage) wxService.wxConfigStorage;
  45. WxMassOpenIdsMessage massMessage = new WxMassOpenIdsMessage();
  46. massMessage.setMsgtype(massMsgType);
  47. massMessage.setMedia_id(mediaId);
  48. massMessage.getTouser().add(configProvider.getOpenId());
  49. WxMassSendResult massResult = wxService.massOpenIdsMessageSend(massMessage);
  50. Assert.assertNotNull(massResult);
  51. Assert.assertNotNull(massResult.getMsg_id());
  52. }
  53. @Test
  54. public void testTextMassGroupMessageSend() throws WxErrorException {
  55. WxMassGroupMessage massMessage = new WxMassGroupMessage();
  56. massMessage.setMsgtype(WxConsts.MASS_MSG_TEXT);
  57. massMessage.setContent("测试群发消息\n欢迎欢迎,热烈欢迎\n换行测试\n超链接:<a href=\"http://www.baidu.com\">Hello World</a>");
  58. massMessage.setGroup_id(wxService.groupGet().get(0).getId());
  59. WxMassSendResult massResult = wxService.massGroupMessageSend(massMessage);
  60. Assert.assertNotNull(massResult);
  61. Assert.assertNotNull(massResult.getMsg_id());
  62. }
  63. @Test(dataProvider="massMessages")
  64. public void testMediaMassGroupMessageSend(String massMsgType, String mediaId) throws WxErrorException, IOException {
  65. WxMassGroupMessage massMessage = new WxMassGroupMessage();
  66. massMessage.setMsgtype(massMsgType);
  67. massMessage.setMedia_id(mediaId);
  68. massMessage.setGroup_id(wxService.groupGet().get(0).getId());
  69. WxMassSendResult massResult = wxService.massGroupMessageSend(massMessage);
  70. Assert.assertNotNull(massResult);
  71. Assert.assertNotNull(massResult.getMsg_id());
  72. }
  73. @DataProvider
  74. public Object[][] massMessages() throws WxErrorException, IOException {
  75. Object[][] messages = new Object[4][];
  76. /*
  77. * 视频素材
  78. */
  79. {
  80. // 上传视频到媒体库
  81. InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.mp4");
  82. WxMediaUploadResult uploadMediaRes = wxService.mediaUpload(WxConsts.MEDIA_VIDEO, WxConsts.FILE_MP4, inputStream);
  83. Assert.assertNotNull(uploadMediaRes);
  84. Assert.assertNotNull(uploadMediaRes.getMedia_id());
  85. // 把视频变成可被群发的媒体
  86. WxMassVideo video = new WxMassVideo();
  87. video.setTitle("测试标题");
  88. video.setDescription("测试描述");
  89. video.setMedia_id(uploadMediaRes.getMedia_id());
  90. WxMassUploadResult uploadResult = wxService.massVideoUpload(video);
  91. Assert.assertNotNull(uploadResult);
  92. Assert.assertNotNull(uploadResult.getMedia_id());
  93. messages[0] = new Object[] { WxConsts.MASS_MSG_VIDEO, uploadResult.getMedia_id() };
  94. }
  95. /**
  96. * 图片素材
  97. */
  98. {
  99. InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.jpeg");
  100. WxMediaUploadResult uploadMediaRes = wxService.mediaUpload(WxConsts.MEDIA_IMAGE, WxConsts.FILE_JPG, inputStream);
  101. Assert.assertNotNull(uploadMediaRes);
  102. Assert.assertNotNull(uploadMediaRes.getMedia_id());
  103. messages[1] = new Object[] { WxConsts.MASS_MSG_IMAGE, uploadMediaRes.getMedia_id() };
  104. }
  105. /**
  106. * 语音素材
  107. */
  108. {
  109. InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.mp3");
  110. WxMediaUploadResult uploadMediaRes = wxService.mediaUpload(WxConsts.MEDIA_VOICE, WxConsts.FILE_MP3, inputStream);
  111. Assert.assertNotNull(uploadMediaRes);
  112. Assert.assertNotNull(uploadMediaRes.getMedia_id());
  113. messages[2] = new Object[] { WxConsts.MASS_MSG_VOICE, uploadMediaRes.getMedia_id() };
  114. }
  115. /**
  116. * 图文素材
  117. */
  118. {
  119. // 上传照片到媒体库
  120. InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.jpeg");
  121. WxMediaUploadResult uploadMediaRes = wxService.mediaUpload(WxConsts.MEDIA_IMAGE, WxConsts.FILE_JPG, inputStream);
  122. Assert.assertNotNull(uploadMediaRes);
  123. Assert.assertNotNull(uploadMediaRes.getMedia_id());
  124. // 上传图文消息
  125. WxMassNews news = new WxMassNews();
  126. WxMassNewsArticle article1 = new WxMassNewsArticle();
  127. article1.setTitle("标题1");
  128. article1.setContent("内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1");
  129. article1.setThumb_media_id(uploadMediaRes.getMedia_id());
  130. news.addArticle(article1);
  131. WxMassNewsArticle article2 = new WxMassNewsArticle();
  132. article2.setTitle("标题2");
  133. article2.setContent("内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2");
  134. article2.setThumb_media_id(uploadMediaRes.getMedia_id());
  135. article2.setShow_cover_pic(true);
  136. article2.setAuthor("作者2");
  137. article2.setContent_source_url("www.baidu.com");
  138. article2.setDigest("摘要2");
  139. news.addArticle(article2);
  140. WxMassUploadResult massUploadResult = wxService.massNewsUpload(news);
  141. Assert.assertNotNull(massUploadResult);
  142. Assert.assertNotNull(uploadMediaRes.getMedia_id());
  143. messages[3] = new Object[] { WxConsts.MASS_MSG_NEWS, massUploadResult.getMedia_id() };
  144. }
  145. return messages;
  146. }
  147. }