1
0
mirror of synced 2026-02-15 00:58:07 +08:00

重构代码,将素材管理相关的接口移到单独一个类中管理

This commit is contained in:
BinaryWang
2016-07-21 12:35:45 +08:00
parent b033490560
commit 73bf3b0364
9 changed files with 454 additions and 410 deletions

View File

@@ -91,7 +91,7 @@ public class WxMpMassMessageAPITest {
{
// 上传视频到媒体库
InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.mp4");
WxMediaUploadResult uploadMediaRes = wxService.mediaUpload(WxConsts.MEDIA_VIDEO, WxConsts.FILE_MP4, inputStream);
WxMediaUploadResult uploadMediaRes = wxService.getMaterialService().mediaUpload(WxConsts.MEDIA_VIDEO, WxConsts.FILE_MP4, inputStream);
Assert.assertNotNull(uploadMediaRes);
Assert.assertNotNull(uploadMediaRes.getMediaId());
@@ -110,7 +110,7 @@ public class WxMpMassMessageAPITest {
*/
{
InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.jpeg");
WxMediaUploadResult uploadMediaRes = wxService.mediaUpload(WxConsts.MEDIA_IMAGE, WxConsts.FILE_JPG, inputStream);
WxMediaUploadResult uploadMediaRes = wxService.getMaterialService().mediaUpload(WxConsts.MEDIA_IMAGE, WxConsts.FILE_JPG, inputStream);
Assert.assertNotNull(uploadMediaRes);
Assert.assertNotNull(uploadMediaRes.getMediaId());
messages[1] = new Object[] { WxConsts.MASS_MSG_IMAGE, uploadMediaRes.getMediaId() };
@@ -120,7 +120,7 @@ public class WxMpMassMessageAPITest {
*/
{
InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.mp3");
WxMediaUploadResult uploadMediaRes = wxService.mediaUpload(WxConsts.MEDIA_VOICE, WxConsts.FILE_MP3, inputStream);
WxMediaUploadResult uploadMediaRes = wxService.getMaterialService().mediaUpload(WxConsts.MEDIA_VOICE, WxConsts.FILE_MP3, inputStream);
Assert.assertNotNull(uploadMediaRes);
Assert.assertNotNull(uploadMediaRes.getMediaId());
messages[2] = new Object[] { WxConsts.MASS_MSG_VOICE, uploadMediaRes.getMediaId() };
@@ -131,7 +131,7 @@ public class WxMpMassMessageAPITest {
{
// 上传照片到媒体库
InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.jpeg");
WxMediaUploadResult uploadMediaRes = wxService.mediaUpload(WxConsts.MEDIA_IMAGE, WxConsts.FILE_JPG, inputStream);
WxMediaUploadResult uploadMediaRes = wxService.getMaterialService().mediaUpload(WxConsts.MEDIA_IMAGE, WxConsts.FILE_JPG, inputStream);
Assert.assertNotNull(uploadMediaRes);
Assert.assertNotNull(uploadMediaRes.getMediaId());

View File

@@ -1,73 +0,0 @@
package me.chanjar.weixin.mp.api;
import com.google.inject.Inject;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.bean.result.WxMediaUploadResult;
import me.chanjar.weixin.common.exception.WxErrorException;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
/**
* 测试多媒体文件上传下载
* @author chanjarster
*
*/
@Test(groups="mediaAPI", dependsOnGroups="baseAPI")
@Guice(modules = ApiTestModule.class)
public class WxMpMediaAPITest {
@Inject
protected WxMpServiceImpl wxService;
private List<String> media_ids = new ArrayList<>();
@Test(dataProvider="uploadMedia")
public void testUploadMedia(String mediaType, String fileType, String fileName) throws WxErrorException, IOException {
try(InputStream inputStream = ClassLoader.getSystemResourceAsStream(fileName)){
WxMediaUploadResult res = this.wxService.mediaUpload(mediaType, fileType, inputStream);
Assert.assertNotNull(res.getType());
Assert.assertNotNull(res.getCreatedAt());
Assert.assertTrue(res.getMediaId() != null || res.getThumbMediaId() != null);
if (res.getMediaId() != null) {
this.media_ids.add(res.getMediaId());
}
if (res.getThumbMediaId() != null) {
this.media_ids.add(res.getThumbMediaId());
}
}
}
@DataProvider
public Object[][] uploadMedia() {
return new Object[][] {
new Object[] { WxConsts.MEDIA_IMAGE, WxConsts.FILE_JPG, "mm.jpeg" },
new Object[] { WxConsts.MEDIA_VOICE, WxConsts.FILE_MP3, "mm.mp3" },
new Object[] { WxConsts.MEDIA_VIDEO, WxConsts.FILE_MP4, "mm.mp4" },
new Object[] { WxConsts.MEDIA_THUMB, WxConsts.FILE_JPG, "mm.jpeg" }
};
}
@Test(dependsOnMethods = { "testUploadMedia" }, dataProvider="downloadMedia")
public void testDownloadMedia(String media_id) throws WxErrorException {
this.wxService.mediaDownload(media_id);
}
@DataProvider
public Object[][] downloadMedia() {
Object[][] params = new Object[this.media_ids.size()][];
for (int i = 0; i < this.media_ids.size(); i++) {
params[i] = new Object[] { this.media_ids.get(i) };
}
return params;
}
}

View File

@@ -1,9 +1,12 @@
package me.chanjar.weixin.mp.api;
package me.chanjar.weixin.mp.api.impl;
import com.google.inject.Inject;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.bean.result.WxMediaUploadResult;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.common.util.fs.FileUtils;
import me.chanjar.weixin.mp.api.ApiTestModule;
import me.chanjar.weixin.mp.api.WxMpServiceImpl;
import me.chanjar.weixin.mp.bean.WxMpMaterial;
import me.chanjar.weixin.mp.bean.WxMpMaterialArticleUpdate;
import me.chanjar.weixin.mp.bean.WxMpMaterialNews;
@@ -20,14 +23,15 @@ import java.io.InputStream;
import java.util.*;
/**
* 测试多媒体文件上传下载
* 素材管理相关接口的测试
*
* @author chanjarster
* @author codepiano
* @author Binary Wang
*/
@Test(groups = "materialAPI")
@Guice(modules = ApiTestModule.class)
public class WxMpMaterialAPITest {
public class WxMpMaterialServiceImplTest {
@Inject
protected WxMpServiceImpl wxService;
@@ -41,10 +45,20 @@ public class WxMpMaterialAPITest {
// 先查询保存测试开始前永久素材数据
private WxMpMaterialCountResult wxMaterialCountResultBeforeTest;
@Test(dataProvider = "uploadMaterial")
@DataProvider
public Object[][] uploadMedia() {
return new Object[][] {
new Object[] { WxConsts.MEDIA_IMAGE, WxConsts.FILE_JPG, "mm.jpeg" },
new Object[] { WxConsts.MEDIA_VOICE, WxConsts.FILE_MP3, "mm.mp3" },
new Object[] { WxConsts.MEDIA_VIDEO, WxConsts.FILE_MP4, "mm.mp4" },
new Object[] { WxConsts.MEDIA_THUMB, WxConsts.FILE_JPG, "mm.jpeg" }
};
}
@Test(dataProvider = "uploadMedia")
public void testUploadMaterial(String mediaType, String fileType, String fileName) throws WxErrorException, IOException {
if (wxMaterialCountResultBeforeTest == null) {
wxMaterialCountResultBeforeTest = wxService.materialCount();
wxMaterialCountResultBeforeTest = this.wxService.getMaterialService().materialCount();
}
InputStream inputStream = ClassLoader.getSystemResourceAsStream(fileName);
File tempFile = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), fileType);
@@ -55,7 +69,7 @@ public class WxMpMaterialAPITest {
wxMaterial.setVideoTitle("title");
wxMaterial.setVideoIntroduction("test video description");
}
WxMpMaterialUploadResult res = wxService.materialFileUpload(mediaType, wxMaterial);
WxMpMaterialUploadResult res = this.wxService.getMaterialService().materialFileUpload(mediaType, wxMaterial);
Assert.assertNotNull(res.getMediaId());
if (WxConsts.MEDIA_IMAGE.equals(mediaType) || WxConsts.MEDIA_THUMB.equals(mediaType)) {
Assert.assertNotNull(res.getUrl());
@@ -69,6 +83,8 @@ public class WxMpMaterialAPITest {
materialInfo.put("length", tempFile.length());
materialInfo.put("filename", tempFile.getName());
media_ids.put(res.getMediaId(), materialInfo);
System.out.println(res);
}
@Test(dependsOnMethods = {"testUploadMaterial"})
@@ -88,14 +104,14 @@ public class WxMpMaterialAPITest {
// 多图文消息
WxMpMaterialNews wxMpMaterialNewsMultiple = new WxMpMaterialNews();
WxMpMaterialNews.WxMpMaterialNewsArticle wxMpMaterialNewsArticleMutiple1 = new WxMpMaterialNews.WxMpMaterialNewsArticle();
wxMpMaterialNewsArticleMutiple1.setAuthor("author1");
wxMpMaterialNewsArticleMutiple1.setThumbMediaId(thumbMediaId);
wxMpMaterialNewsArticleMutiple1.setTitle("multi title1");
wxMpMaterialNewsArticleMutiple1.setContent("content 1");
wxMpMaterialNewsArticleMutiple1.setContentSourceUrl("content url");
wxMpMaterialNewsArticleMutiple1.setShowCoverPic(true);
wxMpMaterialNewsArticleMutiple1.setDigest("");
WxMpMaterialNews.WxMpMaterialNewsArticle wxMpMaterialNewsArticleMultiple1 = new WxMpMaterialNews.WxMpMaterialNewsArticle();
wxMpMaterialNewsArticleMultiple1.setAuthor("author1");
wxMpMaterialNewsArticleMultiple1.setThumbMediaId(thumbMediaId);
wxMpMaterialNewsArticleMultiple1.setTitle("multi title1");
wxMpMaterialNewsArticleMultiple1.setContent("content 1");
wxMpMaterialNewsArticleMultiple1.setContentSourceUrl("content url");
wxMpMaterialNewsArticleMultiple1.setShowCoverPic(true);
wxMpMaterialNewsArticleMultiple1.setDigest("");
WxMpMaterialNews.WxMpMaterialNewsArticle wxMpMaterialNewsArticleMultiple2 = new WxMpMaterialNews.WxMpMaterialNewsArticle();
wxMpMaterialNewsArticleMultiple2.setAuthor("author2");
@@ -106,18 +122,18 @@ public class WxMpMaterialAPITest {
wxMpMaterialNewsArticleMultiple2.setShowCoverPic(true);
wxMpMaterialNewsArticleMultiple2.setDigest("");
wxMpMaterialNewsMultiple.addArticle(wxMpMaterialNewsArticleMutiple1);
wxMpMaterialNewsMultiple.addArticle(wxMpMaterialNewsArticleMultiple1);
wxMpMaterialNewsMultiple.addArticle(wxMpMaterialNewsArticleMultiple2);
WxMpMaterialUploadResult resSingle = wxService.materialNewsUpload(wxMpMaterialNewsSingle);
WxMpMaterialUploadResult resSingle = this.wxService.getMaterialService().materialNewsUpload(wxMpMaterialNewsSingle);
singleNewsMediaId = resSingle.getMediaId();
WxMpMaterialUploadResult resMulti = wxService.materialNewsUpload(wxMpMaterialNewsMultiple);
WxMpMaterialUploadResult resMulti = this.wxService.getMaterialService().materialNewsUpload(wxMpMaterialNewsMultiple);
multiNewsMediaId = resMulti.getMediaId();
}
@Test(dependsOnMethods = {"testAddNews"})
public void testMaterialCount() throws WxErrorException {
WxMpMaterialCountResult wxMaterialCountResult = wxService.materialCount();
WxMpMaterialCountResult wxMaterialCountResult = this.wxService.getMaterialService().materialCount();
// 测试上传过程中添加了一个音频一个视频两个图片两个图文消息
Assert.assertEquals(wxMaterialCountResultBeforeTest.getVoiceCount() + 1, wxMaterialCountResult.getVoiceCount());
Assert.assertEquals(wxMaterialCountResultBeforeTest.getVideoCount() + 1, wxMaterialCountResult.getVideoCount());
@@ -125,29 +141,18 @@ public class WxMpMaterialAPITest {
Assert.assertEquals(wxMaterialCountResultBeforeTest.getNewsCount() + 2, wxMaterialCountResult.getNewsCount());
}
@DataProvider
public Object[][] uploadMaterial() {
return new Object[][]{
new Object[]{WxConsts.MEDIA_IMAGE, WxConsts.FILE_JPG, "mm.jpeg"},
new Object[]{WxConsts.MEDIA_VOICE, WxConsts.FILE_MP3, "mm.mp3"},
new Object[]{WxConsts.MEDIA_VIDEO, WxConsts.FILE_MP4, "mm.mp4"},
new Object[]{WxConsts.MEDIA_THUMB, WxConsts.FILE_JPG, "mm.jpeg"}
};
}
@Test(dependsOnMethods = {"testMaterialCount"}, dataProvider = "downloadMaterial")
public void testDownloadMaterial(String media_id) throws WxErrorException, IOException {
Map<String, Object> materialInfo = media_ids.get(media_id);
Assert.assertNotNull(materialInfo);
String filename = materialInfo.get("filename").toString();
if (filename.endsWith(".mp3") || filename.endsWith(".jpeg")) {
InputStream inputStream = wxService.materialImageOrVoiceDownload(media_id);
InputStream inputStream = this.wxService.getMaterialService().materialImageOrVoiceDownload(media_id);
Assert.assertNotNull(inputStream);
IOUtils.closeQuietly(inputStream);
}
if (filename.endsWith("mp4")) {
WxMpMaterialVideoInfoResult wxMaterialVideoInfoResult = wxService.materialVideoInfo(media_id);
WxMpMaterialVideoInfoResult wxMaterialVideoInfoResult = this.wxService.getMaterialService().materialVideoInfo(media_id);
Assert.assertNotNull(wxMaterialVideoInfoResult);
Assert.assertNotNull(wxMaterialVideoInfoResult.getDownUrl());
}
@@ -155,15 +160,15 @@ public class WxMpMaterialAPITest {
@Test(dependsOnMethods = {"testAddNews"})
public void testGetNewsInfo() throws WxErrorException {
WxMpMaterialNews wxMpMaterialNewsSingle = wxService.materialNewsInfo(singleNewsMediaId);
WxMpMaterialNews wxMpMaterialNewsMultiple = wxService.materialNewsInfo(multiNewsMediaId);
WxMpMaterialNews wxMpMaterialNewsSingle = this.wxService.getMaterialService().materialNewsInfo(singleNewsMediaId);
WxMpMaterialNews wxMpMaterialNewsMultiple = this.wxService.getMaterialService().materialNewsInfo(multiNewsMediaId);
Assert.assertNotNull(wxMpMaterialNewsSingle);
Assert.assertNotNull(wxMpMaterialNewsMultiple);
}
@Test(dependsOnMethods = {"testGetNewsInfo"})
public void testUpdateNewsInfo() throws WxErrorException {
WxMpMaterialNews wxMpMaterialNewsSingle = wxService.materialNewsInfo(singleNewsMediaId);
WxMpMaterialNews wxMpMaterialNewsSingle = this.wxService.getMaterialService().materialNewsInfo(singleNewsMediaId);
Assert.assertNotNull(wxMpMaterialNewsSingle);
WxMpMaterialArticleUpdate wxMpMaterialArticleUpdateSingle = new WxMpMaterialArticleUpdate();
WxMpMaterialNews.WxMpMaterialNewsArticle articleSingle = wxMpMaterialNewsSingle.getArticles().get(0);
@@ -171,13 +176,13 @@ public class WxMpMaterialAPITest {
wxMpMaterialArticleUpdateSingle.setMediaId(singleNewsMediaId);
wxMpMaterialArticleUpdateSingle.setArticles(articleSingle);
wxMpMaterialArticleUpdateSingle.setIndex(0);
boolean resultSingle = wxService.materialNewsUpdate(wxMpMaterialArticleUpdateSingle);
boolean resultSingle = this.wxService.getMaterialService().materialNewsUpdate(wxMpMaterialArticleUpdateSingle);
Assert.assertTrue(resultSingle);
wxMpMaterialNewsSingle = wxService.materialNewsInfo(singleNewsMediaId);
wxMpMaterialNewsSingle = this.wxService.getMaterialService().materialNewsInfo(singleNewsMediaId);
Assert.assertNotNull(wxMpMaterialNewsSingle);
Assert.assertEquals("content single update", wxMpMaterialNewsSingle.getArticles().get(0).getContent());
WxMpMaterialNews wxMpMaterialNewsMultiple = wxService.materialNewsInfo(multiNewsMediaId);
WxMpMaterialNews wxMpMaterialNewsMultiple = this.wxService.getMaterialService().materialNewsInfo(multiNewsMediaId);
Assert.assertNotNull(wxMpMaterialNewsMultiple);
WxMpMaterialArticleUpdate wxMpMaterialArticleUpdateMulti = new WxMpMaterialArticleUpdate();
WxMpMaterialNews.WxMpMaterialNewsArticle articleMulti = wxMpMaterialNewsMultiple.getArticles().get(1);
@@ -185,31 +190,30 @@ public class WxMpMaterialAPITest {
wxMpMaterialArticleUpdateMulti.setMediaId(multiNewsMediaId);
wxMpMaterialArticleUpdateMulti.setArticles(articleMulti);
wxMpMaterialArticleUpdateMulti.setIndex(1);
boolean resultMulti = wxService.materialNewsUpdate(wxMpMaterialArticleUpdateMulti);
boolean resultMulti = this.wxService.getMaterialService().materialNewsUpdate(wxMpMaterialArticleUpdateMulti);
Assert.assertTrue(resultMulti);
wxMpMaterialNewsMultiple = wxService.materialNewsInfo(multiNewsMediaId);
wxMpMaterialNewsMultiple = this.wxService.getMaterialService().materialNewsInfo(multiNewsMediaId);
Assert.assertNotNull(wxMpMaterialNewsMultiple);
Assert.assertEquals("content 2 update", wxMpMaterialNewsMultiple.getArticles().get(1).getContent());
}
@Test(dependsOnMethods = {"testUpdateNewsInfo"})
public void testMaterialNewsList() throws WxErrorException {
WxMpMaterialNewsBatchGetResult wxMpMaterialNewsBatchGetResult = wxService.materialNewsBatchGet(0, 20);
WxMpMaterialNewsBatchGetResult wxMpMaterialNewsBatchGetResult = this.wxService.getMaterialService().materialNewsBatchGet(0, 20);
return;
}
@Test(dependsOnMethods = {"testMaterialNewsList"})
public void testMaterialFileList() throws WxErrorException {
WxMpMaterialFileBatchGetResult wxMpMaterialVoiceBatchGetResult = wxService.materialFileBatchGet(WxConsts.MATERIAL_VOICE, 0, 20);
WxMpMaterialFileBatchGetResult wxMpMaterialVideoBatchGetResult = wxService.materialFileBatchGet(WxConsts.MATERIAL_VIDEO, 0, 20);
WxMpMaterialFileBatchGetResult wxMpMaterialImageBatchGetResult = wxService.materialFileBatchGet(WxConsts.MATERIAL_IMAGE, 0, 20);
WxMpMaterialFileBatchGetResult wxMpMaterialVoiceBatchGetResult = this.wxService.getMaterialService().materialFileBatchGet(WxConsts.MATERIAL_VOICE, 0, 20);
WxMpMaterialFileBatchGetResult wxMpMaterialVideoBatchGetResult = this.wxService.getMaterialService().materialFileBatchGet(WxConsts.MATERIAL_VIDEO, 0, 20);
WxMpMaterialFileBatchGetResult wxMpMaterialImageBatchGetResult = this.wxService.getMaterialService().materialFileBatchGet(WxConsts.MATERIAL_IMAGE, 0, 20);
return;
}
@Test(dependsOnMethods = {"testMaterialFileList"}, dataProvider = "allTestMaterial")
public void testDeleteMaterial(String mediaId) throws WxErrorException {
boolean result = wxService.materialDelete(mediaId);
boolean result = this.wxService.getMaterialService().materialDelete(mediaId);
Assert.assertTrue(result);
}
@@ -234,4 +238,42 @@ public class WxMpMaterialAPITest {
params.add(new Object[]{this.multiNewsMediaId});
return params.iterator();
}
// 以下为media接口的测试
private List<String> mediaIds = new ArrayList<>();
@Test(dataProvider="uploadMedia")
public void testUploadMedia(String mediaType, String fileType, String fileName) throws WxErrorException, IOException {
try(InputStream inputStream = ClassLoader.getSystemResourceAsStream(fileName)){
WxMediaUploadResult res = this.wxService.getMaterialService().mediaUpload(mediaType, fileType, inputStream);
Assert.assertNotNull(res.getType());
Assert.assertNotNull(res.getCreatedAt());
Assert.assertTrue(res.getMediaId() != null || res.getThumbMediaId() != null);
if (res.getMediaId() != null) {
this.mediaIds.add(res.getMediaId());
}
if (res.getThumbMediaId() != null) {
this.mediaIds.add(res.getThumbMediaId());
}
System.out.println(res);
}
}
@Test(dependsOnMethods = { "testUploadMedia" }, dataProvider="downloadMedia")
public void testDownloadMedia(String media_id) throws WxErrorException {
File file = this.wxService.getMaterialService().mediaDownload(media_id);
Assert.assertNotNull(file);
System.out.println(file.getAbsolutePath());
}
@DataProvider
public Object[][] downloadMedia() {
Object[][] params = new Object[this.mediaIds.size()][];
for (int i = 0; i < this.mediaIds.size(); i++) {
params[i] = new Object[] { this.mediaIds.get(i) };
}
return params;
}
}

View File

@@ -18,7 +18,7 @@ public class DemoImageHandler implements WxMpMessageHandler {
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context,
WxMpService wxMpService, WxSessionManager sessionManager) {
try {
WxMediaUploadResult wxMediaUploadResult = wxMpService
WxMediaUploadResult wxMediaUploadResult = wxMpService.getMaterialService()
.mediaUpload(WxConsts.MEDIA_IMAGE, WxConsts.FILE_JPG, ClassLoader.getSystemResourceAsStream("mm.jpeg"));
WxMpXmlOutImageMessage m
= WxMpXmlOutMessage

View File

@@ -3,19 +3,18 @@
<suite name="Weixin-java-tool-suite" verbose="1">
<test name="API_Test">
<classes>
<class name="me.chanjar.weixin.mp.api.WxMpBusyRetryTest" />
<class name="me.chanjar.weixin.mp.api.WxMpBusyRetryTest" />
<class name="me.chanjar.weixin.mp.api.WxMpBaseAPITest" />
<class name="me.chanjar.weixin.mp.api.WxMpCustomMessageAPITest" />
<class name="me.chanjar.weixin.mp.api.WxMpMenuAPITest" />
<class name="me.chanjar.weixin.mp.api.WxMpGroupAPITest" />
<class name="me.chanjar.weixin.mp.api.WxMpMassMessageAPITest" />
<class name="me.chanjar.weixin.mp.api.WxMpMediaAPITest" />
<class name="me.chanjar.weixin.mp.api.WxMpUserAPITest" />
<class name="me.chanjar.weixin.mp.api.WxMpQrCodeAPITest" />
<class name="me.chanjar.weixin.mp.api.WxMpShortUrlAPITest" />
<class name="me.chanjar.weixin.mp.api.WxMpMessageRouterTest" />
<class name="me.chanjar.weixin.mp.api.WxMpJsAPITest" />
<class name="me.chanjar.weixin.mp.api.WxMpMiscAPITest" />
<class name="me.chanjar.weixin.mp.api.WxMpJsAPITest" />
<class name="me.chanjar.weixin.mp.api.WxMpMiscAPITest" />
</classes>
</test>