142 lines
4.4 KiB
Java
142 lines
4.4 KiB
Java
package chanjarster.weixin.api;
|
|
|
|
import java.io.InputStream;
|
|
|
|
import javax.xml.bind.JAXBException;
|
|
import javax.xml.bind.annotation.XmlAccessType;
|
|
import javax.xml.bind.annotation.XmlAccessorType;
|
|
import javax.xml.bind.annotation.XmlRootElement;
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.testng.Assert;
|
|
import org.testng.annotations.BeforeTest;
|
|
import org.testng.annotations.DataProvider;
|
|
import org.testng.annotations.Test;
|
|
|
|
import chanjarster.weixin.bean.WxCustomMessage;
|
|
import chanjarster.weixin.bean.WxMenu;
|
|
import chanjarster.weixin.bean.WxMenu.WxMenuButton;
|
|
import chanjarster.weixin.exception.WxErrorException;
|
|
import chanjarster.weixin.util.XmlTransformer;
|
|
|
|
public class WxServiceTest {
|
|
|
|
private WxServiceImpl wxService;
|
|
|
|
@BeforeTest
|
|
public void prepare() throws JAXBException {
|
|
InputStream is1 = ClassLoader.getSystemResourceAsStream("test-config.xml");
|
|
WxXmlConfigStorage config1 = XmlTransformer.fromXml(WxXmlConfigStorage.class, is1);
|
|
this.wxService = new WxServiceImpl();
|
|
this.wxService.setWxConfigProvider(config1);
|
|
}
|
|
|
|
@Test
|
|
public void testRefreshAccessToken() throws WxErrorException {
|
|
WxConfigStorage configProvider = wxService.wxConfigProvider;
|
|
String before = configProvider.getAccessToken();
|
|
wxService.refreshAccessToken();
|
|
|
|
String after = configProvider.getAccessToken();
|
|
|
|
Assert.assertNotEquals(before, after);
|
|
Assert.assertTrue(StringUtils.isNotBlank(after));
|
|
}
|
|
|
|
@Test(dependsOnMethods = "testRefreshAccessToken", enabled = false)
|
|
public void sendCustomMessage() throws WxErrorException {
|
|
WxXmlConfigStorage configProvider = (WxXmlConfigStorage) wxService.wxConfigProvider;
|
|
WxCustomMessage message = new WxCustomMessage();
|
|
message.setMsgtype(WxConsts.MSG_TEXT);
|
|
message.setTouser(configProvider.getOpenId());
|
|
message.setContent("欢迎使用教务系统微信公众号\n下面\n<a href=\"http://www.baidu.com\">Hello World</a>");
|
|
|
|
wxService.sendCustomMessage(message);
|
|
}
|
|
|
|
@Test(dataProvider = "menu", enabled = true, dependsOnMethods = "testRefreshAccessToken")
|
|
public void testCreateMenu(WxMenu wxMenu) throws WxErrorException {
|
|
wxService.createMenu(wxMenu);
|
|
}
|
|
|
|
@Test(dependsOnMethods = { "testRefreshAccessToken" , "testCreateMenu"})
|
|
public void testGetMenu() throws WxErrorException {
|
|
Assert.assertNotNull(wxService.getMenu());
|
|
}
|
|
|
|
@Test(dependsOnMethods = { "testRefreshAccessToken", "testGetMenu" }, enabled = false)
|
|
public void testDeleteMenu() throws WxErrorException {
|
|
wxService.deleteMenu();
|
|
}
|
|
|
|
@DataProvider(name="menu")
|
|
public Object[][] getMenu() throws JAXBException {
|
|
WxMenu menu = new WxMenu();
|
|
WxMenuButton button1 = new WxMenuButton();
|
|
button1.setType("click");
|
|
button1.setName("今日歌曲");
|
|
button1.setKey("V1001_TODAY_MUSIC");
|
|
|
|
WxMenuButton button2 = new WxMenuButton();
|
|
button2.setType("click");
|
|
button2.setName("歌手简介");
|
|
button2.setKey("V1001_TODAY_SINGER");
|
|
|
|
WxMenuButton button3 = new WxMenuButton();
|
|
button3.setName("菜单");
|
|
|
|
menu.getButton().add(button1);
|
|
menu.getButton().add(button2);
|
|
menu.getButton().add(button3);
|
|
|
|
WxMenuButton button31 = new WxMenuButton();
|
|
button31.setType("view");
|
|
button31.setName("搜索");
|
|
button31.setUrl("http://www.soso.com/");
|
|
|
|
WxMenuButton button32 = new WxMenuButton();
|
|
button32.setType("view");
|
|
button32.setName("视频");
|
|
button32.setUrl("http://v.qq.com/");
|
|
|
|
WxMenuButton button33 = new WxMenuButton();
|
|
button33.setType("click");
|
|
button33.setName("赞一下我们");
|
|
button33.setKey("V1001_GOOD");
|
|
|
|
button3.getSub_button().add(button31);
|
|
button3.getSub_button().add(button32);
|
|
button3.getSub_button().add(button33);
|
|
|
|
return new Object[][] {
|
|
new Object[] {
|
|
menu
|
|
}
|
|
};
|
|
|
|
}
|
|
|
|
|
|
@XmlRootElement(name = "xml")
|
|
@XmlAccessorType(XmlAccessType.FIELD)
|
|
public static class WxXmlConfigStorage extends WxInMemoryConfigStorage {
|
|
|
|
protected String openId;
|
|
|
|
public String getOpenId() {
|
|
return openId;
|
|
}
|
|
public void setOpenId(String openId) {
|
|
this.openId = openId;
|
|
}
|
|
@Override
|
|
public String toString() {
|
|
return "SimpleWxConfigProvider [appId=" + appId + ", secret=" + secret + ", accessToken=" + accessToken
|
|
+ ", expiresIn=" + expiresIn + ", token=" + token + ", openId=" + openId + "]";
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|