From 6a7367ec0bc70d40cafe1598003e450c600080b8 Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Sun, 18 Aug 2019 21:15:18 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20#1109=20=E4=BF=AE=E5=A4=8D=E4=BC=81?= =?UTF-8?q?=E4=B8=9A=E5=BE=AE=E4=BF=A1=E7=AC=AC=E4=B8=89=E6=96=B9=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E8=8E=B7=E5=8F=96=E6=B0=B8=E4=B9=85=E6=8E=88=E6=9D=83?= =?UTF-8?q?=E7=A0=81=E8=A7=A3=E6=9E=90=E4=BB=A3=E7=A0=81=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chanjar/weixin/cp/api/WxCpTpService.java | 21 +-- .../cp/api/impl/BaseWxCpTpServiceImpl.java | 11 +- .../api/impl/BaseWxCpTpServiceImplTest.java | 172 ++++++++++++++++++ 3 files changed, 188 insertions(+), 16 deletions(-) create mode 100644 weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/BaseWxCpTpServiceImplTest.java diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpTpService.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpTpService.java index 40ffcf55..edc2f552 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpTpService.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpTpService.java @@ -15,7 +15,6 @@ import me.chanjar.weixin.cp.config.WxCpTpConfigStorage; * @author zhenjun cai */ public interface WxCpTpService { - /** *
    * 验证推送过来的消息的正确性
@@ -84,15 +83,15 @@ public interface WxCpTpService {
   WxAccessToken getCorpToken(String authCorpid, String permanentCode) throws WxErrorException;
 
   /**
-   * 获取企业永久授权码
+   * 获取企业永久授权码 .
    *
-   * @param authCode
-   * @return
+   * @param authCode .
+   * @return .
    */
   WxCpTpCorp getPermanentCode(String authCode) throws WxErrorException;
 
   /**
-   * 当本Service没有实现某个API的时候,可以用这个,针对所有微信API中的GET请求
+   * 当本Service没有实现某个API的时候,可以用这个,针对所有微信API中的GET请求.
    *
    * @param url        接口地址
    * @param queryParam 请求参数
@@ -100,7 +99,7 @@ public interface WxCpTpService {
   String get(String url, String queryParam) throws WxErrorException;
 
   /**
-   * 当本Service没有实现某个API的时候,可以用这个,针对所有微信API中的POST请求
+   * 当本Service没有实现某个API的时候,可以用这个,针对所有微信API中的POST请求.
    *
    * @param url      接口地址
    * @param postData 请求body字符串
@@ -124,7 +123,7 @@ public interface WxCpTpService {
 
   /**
    * 
-   * 设置当微信系统响应系统繁忙时,要等待多少 retrySleepMillis(ms) * 2^(重试次数 - 1) 再发起重试
+   * 设置当微信系统响应系统繁忙时,要等待多少 retrySleepMillis(ms) * 2^(重试次数 - 1) 再发起重试.
    * 默认:1000ms
    * 
* @@ -134,7 +133,7 @@ public interface WxCpTpService { /** *
-   * 设置当微信系统响应系统繁忙时,最大重试次数
+   * 设置当微信系统响应系统繁忙时,最大重试次数.
    * 默认:5次
    * 
* @@ -148,21 +147,21 @@ public interface WxCpTpService { void initHttp(); /** - * 获取WxMpConfigStorage 对象 + * 获取WxMpConfigStorage 对象. * * @return WxMpConfigStorage */ WxCpTpConfigStorage getWxCpTpConfigStorage(); /** - * 注入 {@link WxCpTpConfigStorage} 的实现 + * 注入 {@link WxCpTpConfigStorage} 的实现. * * @param wxConfigProvider 配置对象 */ void setWxCpTpConfigStorage(WxCpTpConfigStorage wxConfigProvider); /** - * http请求对象 + * http请求对象. */ RequestHttp getRequestHttp(); diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/BaseWxCpTpServiceImpl.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/BaseWxCpTpServiceImpl.java index a0585af1..dbf4dabf 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/BaseWxCpTpServiceImpl.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/BaseWxCpTpServiceImpl.java @@ -25,6 +25,8 @@ import java.io.IOException; import java.util.HashMap; import java.util.Map; +import static me.chanjar.weixin.cp.constant.WxCpApiPathConsts.Tp.*; + /** * . * @@ -95,7 +97,7 @@ public abstract class BaseWxCpTpServiceImpl implements WxCpTpService, Requ params.put("js_code", jsCode); params.put("grant_type", "authorization_code"); - final String url = configStorage.getApiUrl(WxCpApiPathConsts.Tp.JSCODE_TO_SESSION); + final String url = configStorage.getApiUrl(JSCODE_TO_SESSION); return WxCpMaJsCode2SessionResult.fromJson(this.get(url, Joiner.on("&").withKeyValueSeparator("=").join(params))); } @@ -105,20 +107,19 @@ public abstract class BaseWxCpTpServiceImpl implements WxCpTpService, Requ JsonObject jsonObject = new JsonObject(); jsonObject.addProperty("auth_corpid", authCorpid); jsonObject.addProperty("permanent_code", permanentCode); - String result = post(configStorage.getApiUrl(WxCpApiPathConsts.Tp.GET_CORP_TOKEN), jsonObject.toString()); + String result = post(configStorage.getApiUrl(GET_CORP_TOKEN), jsonObject.toString()); return WxAccessToken.fromJson(result); } - @Override public WxCpTpCorp getPermanentCode(String authCode) throws WxErrorException { JsonObject jsonObject = new JsonObject(); jsonObject.addProperty("auth_code", authCode); - String result = post(configStorage.getApiUrl(WxCpApiPathConsts.Tp.GET_PERMANENT_CODE), jsonObject.toString()); + String result = post(configStorage.getApiUrl(GET_PERMANENT_CODE), jsonObject.toString()); jsonObject = new JsonParser().parse(result).getAsJsonObject(); - WxCpTpCorp wxCpTpCorp = WxCpTpCorp.fromJson(jsonObject.get("auth_corp_info").getAsString()); + WxCpTpCorp wxCpTpCorp = WxCpTpCorp.fromJson(jsonObject.get("auth_corp_info").getAsJsonObject().toString()); wxCpTpCorp.setPermanentCode(jsonObject.get("permanent_code").getAsString()); return wxCpTpCorp; } diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/BaseWxCpTpServiceImplTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/BaseWxCpTpServiceImplTest.java new file mode 100644 index 00000000..5de54f54 --- /dev/null +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/impl/BaseWxCpTpServiceImplTest.java @@ -0,0 +1,172 @@ +package me.chanjar.weixin.cp.api.impl; + +import com.google.gson.JsonObject; +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.cp.api.WxCpService; +import me.chanjar.weixin.cp.api.WxCpTpService; +import me.chanjar.weixin.cp.bean.WxCpTpCorp; +import me.chanjar.weixin.cp.config.WxCpTpConfigStorage; +import me.chanjar.weixin.cp.config.impl.WxCpTpDefaultConfigImpl; +import me.chanjar.weixin.cp.constant.WxCpApiPathConsts; +import org.testng.annotations.Test; + +import static me.chanjar.weixin.cp.constant.WxCpApiPathConsts.Tp.GET_PERMANENT_CODE; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyString; +import static org.mockito.Mockito.*; +import static org.testng.Assert.*; + +/** + * 测试代码. + * + * @author Binary Wang + * @date 2019-08-18 + */ +public class BaseWxCpTpServiceImplTest { + private WxCpTpService tpService = spy(new WxCpTpServiceImpl()); + + @Test + public void testCheckSignature() { + } + + @Test + public void testGetSuiteAccessToken() { + } + + @Test + public void testGetSuiteTicket() { + } + + @Test + public void testTestGetSuiteTicket() { + } + + @Test + public void testJsCode2Session() { + } + + @Test + public void testGetCorpToken() { + } + + @Test + public void testGetPermanentCode() throws WxErrorException { + String returnJson = "{\n" + + " \"errcode\":0 ,\n" + + " \"errmsg\":\"ok\" ,\n" + + " \"access_token\": \"xxxxxx\", \n" + + " \"expires_in\": 7200, \n" + + " \"permanent_code\": \"xxxx\", \n" + + " \"dealer_corp_info\": \n" + + " {\n" + + " \"corpid\": \"xxxx\",\n" + + " \"corp_name\": \"name\"\n" + + " },\n" + + " \"auth_corp_info\": \n" + + " {\n" + + " \"corpid\": \"xxxx\",\n" + + " \"corp_name\": \"name\",\n" + + " \"corp_type\": \"verified\",\n" + + " \"corp_square_logo_url\": \"yyyyy\",\n" + + " \"corp_user_max\": 50,\n" + + " \"corp_agent_max\": 30,\n" + + " \"corp_full_name\":\"full_name\",\n" + + " \"verified_end_time\":1431775834,\n" + + " \"subject_type\": 1,\n" + + " \"corp_wxqrcode\": \"zzzzz\",\n" + + " \"corp_scale\": \"1-50人\",\n" + + " \"corp_industry\": \"IT服务\",\n" + + " \"corp_sub_industry\": \"计算机软件/硬件/信息服务\",\n" + + " \"location\":\"广东省广州市\"\n" + + " },\n" + + " \"auth_info\":\n" + + " {\n" + + " \"agent\" :\n" + + " [\n" + + " {\n" + + " \"agentid\":1,\n" + + " \"name\":\"NAME\",\n" + + " \"round_logo_url\":\"xxxxxx\",\n" + + " \"square_logo_url\":\"yyyyyy\",\n" + + " \"appid\":1,\n" + + " \"privilege\":\n" + + " {\n" + + " \"level\":1,\n" + + " \"allow_party\":[1,2,3],\n" + + " \"allow_user\":[\"zhansan\",\"lisi\"],\n" + + " \"allow_tag\":[1,2,3],\n" + + " \"extra_party\":[4,5,6],\n" + + " \"extra_user\":[\"wangwu\"],\n" + + " \"extra_tag\":[4,5,6]\n" + + " }\n" + + " },\n" + + " {\n" + + " \"agentid\":2,\n" + + " \"name\":\"NAME2\",\n" + + " \"round_logo_url\":\"xxxxxx\",\n" + + " \"square_logo_url\":\"yyyyyy\",\n" + + " \"appid\":5\n" + + " }\n" + + " ]\n" + + " },\n" + + " \"auth_user_info\":\n" + + " {\n" + + " \"userid\":\"aa\",\n" + + " \"name\":\"xxx\",\n" + + " \"avatar\":\"http://xxx\"\n" + + " }\n" + + "}\n"; + + final WxCpTpConfigStorage configStorage = new WxCpTpDefaultConfigImpl(); + tpService.setWxCpTpConfigStorage(configStorage); + + JsonObject jsonObject = new JsonObject(); + String authCode = ""; + jsonObject.addProperty("auth_code", authCode); + doReturn(returnJson).when(tpService).post(configStorage.getApiUrl(GET_PERMANENT_CODE), jsonObject.toString()); + + final WxCpTpCorp tpCorp = tpService.getPermanentCode(authCode); + assertThat(tpCorp.getPermanentCode()).isEqualTo("xxxx"); + } + + @Test + public void testGet() { + } + + @Test + public void testPost() { + } + + @Test + public void testExecute() { + } + + @Test + public void testExecuteInternal() { + } + + @Test + public void testSetWxCpTpConfigStorage() { + } + + @Test + public void testSetRetrySleepMillis() { + } + + @Test + public void testSetMaxRetryTimes() { + } + + @Test + public void testGetTmpDirFile() { + } + + @Test + public void testSetTmpDirFile() { + } + + @Test + public void testGetRequestHttp() { + } +}