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.

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