@@ -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 WxMpMaterialAPI Test {
public class WxMpMaterialServiceImpl Test {
@Inject
protected WxMpServiceImpl wxService ;
@@ -41,10 +45,20 @@ public class WxMpMaterialAPITest {
/ / 先查询保存测试开始前永久素材数据
private WxMpMaterialCountResult wxMaterialCountResultBeforeTest ;
@Test ( d ataProvider = " uploadMaterial " )
@D ataProvider
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 wxMpMaterialNewsArticleMul tiple1 = new WxMpMaterialNews . WxMpMaterialNewsArticle ( ) ;
wxMpMaterialNewsArticleMul tiple1 . setAuthor ( " author1 " ) ;
wxMpMaterialNewsArticleMul tiple1 . setThumbMediaId ( thumbMediaId ) ;
wxMpMaterialNewsArticleMul tiple1 . setTitle ( " multi title1 " ) ;
wxMpMaterialNewsArticleMul tiple1 . setContent ( " content 1 " ) ;
wxMpMaterialNewsArticleMul tiple1 . setContentSourceUrl ( " content url " ) ;
wxMpMaterialNewsArticleMul tiple1 . setShowCoverPic ( true ) ;
wxMpMaterialNewsArticleMul tiple1 . 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 ( wxMpMaterialNewsArticleMul tiple1 ) ;
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 ;
}
}