瀏覽代碼

🎨 #1377 开放平台redis存储类进行抽象重构,方便扩展,并提供redisson的实现

dev1
yydzxz 5 年之前
committed by Binary Wang
父節點
當前提交
75421148e2
共有 14 個文件被更改,包括 527 次插入142 次删除
  1. +6
    -0
      pom.xml
  2. +5
    -0
      spring-boot-starters/wx-java-mp-spring-boot-starter/pom.xml
  3. +4
    -0
      spring-boot-starters/wx-java-mp-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/mp/config/WxMpStorageAutoConfiguration.java
  4. +5
    -0
      spring-boot-starters/wx-java-open-spring-boot-starter/pom.xml
  5. +39
    -7
      spring-boot-starters/wx-java-open-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/open/config/WxOpenStorageAutoConfiguration.java
  6. +9
    -1
      spring-boot-starters/wx-java-open-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/open/properties/WxOpenProperties.java
  7. +4
    -0
      weixin-java-open/pom.xml
  8. +9
    -0
      weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenConfigStorage.java
  9. +47
    -0
      weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/AbstractWxOpenInRedisConfigStorage.java
  10. +10
    -98
      weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInMemoryConfigStorage.java
  11. +1
    -36
      weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInRedisConfigStorage.java
  12. +128
    -0
      weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInRedissonConfigStorage.java
  13. +131
    -0
      weixin-java-open/src/test/java/me/chanjar/weixin/open/api/impl/WxOpenInRedisConfigStorageTest.java
  14. +129
    -0
      weixin-java-open/src/test/java/me/chanjar/weixin/open/api/impl/WxOpenInRedissonConfigStorageTest.java

+ 6
- 0
pom.xml 查看文件

@@ -242,6 +242,12 @@
<version>2.9.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.12.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>


+ 5
- 0
spring-boot-starters/wx-java-mp-spring-boot-starter/pom.xml 查看文件

@@ -24,6 +24,11 @@
<artifactId>jedis</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<scope>compile</scope>
</dependency>
</dependencies>

<build>


+ 4
- 0
spring-boot-starters/wx-java-mp-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/mp/config/WxMpStorageAutoConfiguration.java 查看文件

@@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor;
import me.chanjar.weixin.mp.config.WxMpConfigStorage;
import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
import me.chanjar.weixin.mp.config.impl.WxMpRedisConfigImpl;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
@@ -26,6 +27,9 @@ public class WxMpStorageAutoConfiguration {
@Autowired(required = false)
private JedisPool jedisPool;

@Autowired(required = false)
private RedissonClient redissonClient;

@Bean
@ConditionalOnMissingBean(WxMpConfigStorage.class)
public WxMpConfigStorage wxMpInMemoryConfigStorage() {


+ 5
- 0
spring-boot-starters/wx-java-open-spring-boot-starter/pom.xml 查看文件

@@ -24,6 +24,11 @@
<artifactId>jedis</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<scope>compile</scope>
</dependency>
</dependencies>

<build>


+ 39
- 7
spring-boot-starters/wx-java-open-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/open/config/WxOpenStorageAutoConfiguration.java 查看文件

@@ -6,7 +6,12 @@ import lombok.RequiredArgsConstructor;
import me.chanjar.weixin.open.api.WxOpenConfigStorage;
import me.chanjar.weixin.open.api.impl.WxOpenInMemoryConfigStorage;
import me.chanjar.weixin.open.api.impl.WxOpenInRedisConfigStorage;
import me.chanjar.weixin.open.api.impl.WxOpenInRedissonConfigStorage;
import org.apache.commons.lang3.StringUtils;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.redisson.config.TransportMode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -28,6 +33,9 @@ public class WxOpenStorageAutoConfiguration {
@Autowired(required = false)
private JedisPool jedisPool;

@Autowired(required = false)
private RedissonClient redissonClient;

@Value("${wx.open.config-storage.redis.host:}")
private String redisHost;

@@ -40,12 +48,20 @@ public class WxOpenStorageAutoConfiguration {
if (type == WxOpenProperties.StorageType.redis) {
return getWxOpenInRedisConfigStorage();
}

if (type == WxOpenProperties.StorageType.jedis){
return getWxOpenInRedisConfigStorage();
}

if (type == WxOpenProperties.StorageType.redisson){
return getWxOpenInRedissonConfigStorage();
}
return getWxOpenInMemoryConfigStorage();
}

private WxOpenInMemoryConfigStorage getWxOpenInMemoryConfigStorage() {
WxOpenInMemoryConfigStorage config = new WxOpenInMemoryConfigStorage();
setWxOpenInfo(config);
config.setWxOpenInfo(properties.getAppId(),properties.getSecret(), properties.getToken(), properties.getAesKey());
return config;
}

@@ -55,17 +71,21 @@ public class WxOpenStorageAutoConfiguration {
poolToUse = getJedisPool();
}
WxOpenInRedisConfigStorage config = new WxOpenInRedisConfigStorage(poolToUse);
setWxOpenInfo(config);
config.setWxOpenInfo(properties.getAppId(),properties.getSecret(), properties.getToken(), properties.getAesKey());
return config;
}

private void setWxOpenInfo(WxOpenConfigStorage config) {
config.setComponentAppId(properties.getAppId());
config.setComponentAppSecret(properties.getSecret());
config.setComponentToken(properties.getToken());
config.setComponentAesKey(properties.getAesKey());
private WxOpenInRedissonConfigStorage getWxOpenInRedissonConfigStorage(){
RedissonClient redissonClientToUse = this.redissonClient;
if(redissonClient == null){
redissonClientToUse = getRedissonClient();
}
WxOpenInRedissonConfigStorage config = new WxOpenInRedissonConfigStorage(redissonClientToUse);
config.setWxOpenInfo(properties.getAppId(),properties.getSecret(), properties.getToken(), properties.getAesKey());
return config;
}


private JedisPool getJedisPool() {
WxOpenProperties.ConfigStorage storage = properties.getConfigStorage();
RedisProperties redis = storage.getRedis();
@@ -90,4 +110,16 @@ public class WxOpenStorageAutoConfiguration {
redis.getTimeout(), redis.getPassword(), redis.getDatabase());
return pool;
}

private RedissonClient getRedissonClient(){
WxOpenProperties.ConfigStorage storage = properties.getConfigStorage();
RedisProperties redis = storage.getRedis();

Config config = new Config();
config.useSingleServer()
.setAddress("redis://" + redis.getHost() + ":" + redis.getPort())
.setPassword(redis.getPassword());
config.setTransportMode(TransportMode.NIO);
return Redisson.create(config);
}
}

+ 9
- 1
spring-boot-starters/wx-java-open-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/open/properties/WxOpenProperties.java 查看文件

@@ -63,6 +63,14 @@ public class WxOpenProperties {
/**
* redis.
*/
redis
redis,
/**
* jedis.
*/
jedis,
/**
* redisson.
*/
redisson
}
}

+ 4
- 0
weixin-java-open/pom.xml 查看文件

@@ -87,6 +87,10 @@
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
</dependency>
</dependencies>

<build>


+ 9
- 0
weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenConfigStorage.java 查看文件

@@ -128,4 +128,13 @@ public interface WxOpenConfigStorage {
* @param expiresInSeconds 过期时间,以秒为单位
*/
void updateCardApiTicket(String appId, String cardApiTicket, int expiresInSeconds);

/**
* 设置第三方平台基础信息
* @param componentAppId 第三方平台 appid
* @param componentAppSecret 第三方平台 appsecret
* @param componentToken 消息校验Token
* @param componentAesKey 消息加解密Key
*/
void setWxOpenInfo(String componentAppId, String componentAppSecret, String componentToken, String componentAesKey);
}

+ 47
- 0
weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/AbstractWxOpenInRedisConfigStorage.java 查看文件

@@ -0,0 +1,47 @@
package me.chanjar.weixin.open.api.impl;


import org.apache.commons.lang3.StringUtils;

/**
* @author yangyidian
* @date 2020/01/09
**/
public abstract class AbstractWxOpenInRedisConfigStorage extends WxOpenInMemoryConfigStorage {
protected final static String COMPONENT_VERIFY_TICKET_KEY = "wechat_component_verify_ticket:";
protected final static String COMPONENT_ACCESS_TOKEN_KEY = "wechat_component_access_token:";

protected final static String AUTHORIZER_REFRESH_TOKEN_KEY = "wechat_authorizer_refresh_token:";
protected final static String AUTHORIZER_ACCESS_TOKEN_KEY = "wechat_authorizer_access_token:";
protected final static String JSAPI_TICKET_KEY = "wechat_jsapi_ticket:";
protected final static String CARD_API_TICKET_KEY = "wechat_card_api_ticket:";

/**
* redis 存储的 key 的前缀,可为空
*/
protected String keyPrefix;
protected String componentVerifyTicketKey;
protected String componentAccessTokenKey;
protected String authorizerRefreshTokenKey;
protected String authorizerAccessTokenKey;
protected String jsapiTicketKey;
protected String cardApiTicket;

@Override
public void setComponentAppId(String componentAppId) {
super.setComponentAppId(componentAppId);
String prefix = StringUtils.isBlank(keyPrefix) ? "" :
(StringUtils.endsWith(keyPrefix, ":") ? keyPrefix : (keyPrefix + ":"));
componentVerifyTicketKey = prefix + COMPONENT_VERIFY_TICKET_KEY.concat(componentAppId);
componentAccessTokenKey = prefix + COMPONENT_ACCESS_TOKEN_KEY.concat(componentAppId);
authorizerRefreshTokenKey = prefix + AUTHORIZER_REFRESH_TOKEN_KEY.concat(componentAppId);
authorizerAccessTokenKey = prefix + AUTHORIZER_ACCESS_TOKEN_KEY.concat(componentAppId);
this.jsapiTicketKey = JSAPI_TICKET_KEY.concat(componentAppId);
this.cardApiTicket = CARD_API_TICKET_KEY.concat(componentAppId);
}

protected String getKey(String prefix, String appId) {
return prefix.endsWith(":") ? prefix.concat(appId) : prefix.concat(":").concat(appId);
}

}

+ 10
- 98
weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInMemoryConfigStorage.java 查看文件

@@ -2,6 +2,7 @@ package me.chanjar.weixin.open.api.impl;


import cn.binarywang.wx.miniapp.config.WxMaConfig;
import lombok.Data;
import me.chanjar.weixin.common.bean.WxAccessToken;
import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
import me.chanjar.weixin.mp.bean.WxMpHostConfig;
@@ -23,6 +24,7 @@ import java.util.concurrent.locks.ReentrantLock;
*
* @author <a href="https://github.com/007gzs">007</a>
*/
@Data
public class WxOpenInMemoryConfigStorage implements WxOpenConfigStorage {
private String componentAppId;
private String componentAppSecret;
@@ -43,60 +45,7 @@ public class WxOpenInMemoryConfigStorage implements WxOpenConfigStorage {
private Map<String, Token> jsapiTickets = new ConcurrentHashMap<>();
private Map<String, Token> cardApiTickets = new ConcurrentHashMap<>();

@Override
public String getComponentAppId() {
return componentAppId;
}

@Override
public void setComponentAppId(String componentAppId) {
this.componentAppId = componentAppId;
}

@Override
public String getComponentAppSecret() {
return componentAppSecret;
}

@Override
public void setComponentAppSecret(String componentAppSecret) {
this.componentAppSecret = componentAppSecret;
}

@Override
public String getComponentToken() {
return componentToken;
}

@Override
public void setComponentToken(String componentToken) {
this.componentToken = componentToken;
}

@Override
public String getComponentAesKey() {
return componentAesKey;
}

@Override
public void setComponentAesKey(String componentAesKey) {
this.componentAesKey = componentAesKey;
}

@Override
public String getComponentVerifyTicket() {
return componentVerifyTicket;
}

@Override
public void setComponentVerifyTicket(String componentVerifyTicket) {
this.componentVerifyTicket = componentVerifyTicket;
}

@Override
public String getComponentAccessToken() {
return componentAccessToken;
}

@Override
public boolean isComponentAccessTokenExpired() {
@@ -113,51 +62,6 @@ public class WxOpenInMemoryConfigStorage implements WxOpenConfigStorage {
updateComponentAccessToken(componentAccessToken.getComponentAccessToken(), componentAccessToken.getExpiresIn());
}

@Override
public String getHttpProxyHost() {
return httpProxyHost;
}

public void setHttpProxyHost(String httpProxyHost) {
this.httpProxyHost = httpProxyHost;
}

@Override
public int getHttpProxyPort() {
return httpProxyPort;
}

public void setHttpProxyPort(int httpProxyPort) {
this.httpProxyPort = httpProxyPort;
}

@Override
public String getHttpProxyUsername() {
return httpProxyUsername;
}

public void setHttpProxyUsername(String httpProxyUsername) {
this.httpProxyUsername = httpProxyUsername;
}

@Override
public String getHttpProxyPassword() {
return httpProxyPassword;
}

public void setHttpProxyPassword(String httpProxyPassword) {
this.httpProxyPassword = httpProxyPassword;
}

@Override
public ApacheHttpClientBuilder getApacheHttpClientBuilder() {
return apacheHttpClientBuilder;
}

public ApacheHttpClientBuilder setApacheHttpClientBuilder(ApacheHttpClientBuilder apacheHttpClientBuilder) {
return this.apacheHttpClientBuilder = apacheHttpClientBuilder;
}

@Override
public WxMpConfigStorage getWxMpConfigStorage(String appId) {
return new WxOpenInnerConfigStorage(this, appId);
@@ -174,6 +78,14 @@ public class WxOpenInMemoryConfigStorage implements WxOpenConfigStorage {
this.componentExpiresTime = System.currentTimeMillis() + (expiresInSeconds - 200) * 1000L;
}

@Override
public void setWxOpenInfo(String componentAppId, String componentAppSecret, String componentToken, String componentAesKey) {
setComponentAppId(componentAppId);
setComponentAppSecret(componentAppSecret);
setComponentToken(componentToken);
setComponentAesKey(componentAesKey);
}

@Override
public boolean autoRefreshToken() {
return true;


+ 1
- 36
weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInRedisConfigStorage.java 查看文件

@@ -1,6 +1,5 @@
package me.chanjar.weixin.open.api.impl;

import org.apache.commons.lang3.StringUtils;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.util.Pool;
@@ -8,26 +7,9 @@ import redis.clients.util.Pool;
/**
* @author <a href="https://github.com/007gzs">007</a>
*/
public class WxOpenInRedisConfigStorage extends WxOpenInMemoryConfigStorage {
private final static String COMPONENT_VERIFY_TICKET_KEY = "wechat_component_verify_ticket:";
private final static String COMPONENT_ACCESS_TOKEN_KEY = "wechat_component_access_token:";

private final static String AUTHORIZER_REFRESH_TOKEN_KEY = "wechat_authorizer_refresh_token:";
private final static String AUTHORIZER_ACCESS_TOKEN_KEY = "wechat_authorizer_access_token:";
private final static String JSAPI_TICKET_KEY = "wechat_jsapi_ticket:";
private final static String CARD_API_TICKET_KEY = "wechat_card_api_ticket:";
public class WxOpenInRedisConfigStorage extends AbstractWxOpenInRedisConfigStorage {

protected final Pool<Jedis> jedisPool;
/**
* redis 存储的 key 的前缀,可为空
*/
private String keyPrefix;
private String componentVerifyTicketKey;
private String componentAccessTokenKey;
private String authorizerRefreshTokenKey;
private String authorizerAccessTokenKey;
private String jsapiTicketKey;
private String cardApiTicket;

public WxOpenInRedisConfigStorage(Pool<Jedis> jedisPool) {
this.jedisPool = jedisPool;
@@ -42,19 +24,6 @@ public class WxOpenInRedisConfigStorage extends WxOpenInMemoryConfigStorage {
this.jedisPool = jedisPool;
}

@Override
public void setComponentAppId(String componentAppId) {
super.setComponentAppId(componentAppId);
String prefix = StringUtils.isBlank(keyPrefix) ? "" :
(StringUtils.endsWith(keyPrefix, ":") ? keyPrefix : (keyPrefix + ":"));
componentVerifyTicketKey = prefix + COMPONENT_VERIFY_TICKET_KEY.concat(componentAppId);
componentAccessTokenKey = prefix + COMPONENT_ACCESS_TOKEN_KEY.concat(componentAppId);
authorizerRefreshTokenKey = prefix + AUTHORIZER_REFRESH_TOKEN_KEY.concat(componentAppId);
authorizerAccessTokenKey = prefix + AUTHORIZER_ACCESS_TOKEN_KEY.concat(componentAppId);
this.jsapiTicketKey = JSAPI_TICKET_KEY.concat(componentAppId);
this.cardApiTicket = CARD_API_TICKET_KEY.concat(componentAppId);
}

@Override
public String getComponentVerifyTicket() {
try (Jedis jedis = this.jedisPool.getResource()) {
@@ -97,10 +66,6 @@ public class WxOpenInRedisConfigStorage extends WxOpenInMemoryConfigStorage {
}
}

private String getKey(String prefix, String appId) {
return prefix.endsWith(":") ? prefix.concat(appId) : prefix.concat(":").concat(appId);
}

@Override
public String getAuthorizerRefreshToken(String appId) {
try (Jedis jedis = this.jedisPool.getResource()) {


+ 128
- 0
weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInRedissonConfigStorage.java 查看文件

@@ -0,0 +1,128 @@
package me.chanjar.weixin.open.api.impl;

import java.util.concurrent.TimeUnit;
import org.redisson.api.RedissonClient;

/**
* @author yangyidian
* @date 2020/01/06
**/
public class WxOpenInRedissonConfigStorage extends AbstractWxOpenInRedisConfigStorage{

private RedissonClient redissonClient;

public WxOpenInRedissonConfigStorage(RedissonClient redissonClient, String keyPrefix) {
this.keyPrefix = keyPrefix;
this.redissonClient = redissonClient;
}

public WxOpenInRedissonConfigStorage(RedissonClient redissonClient) {
this.redissonClient = redissonClient;
}

@Override
public String getComponentVerifyTicket() {
Object value = redissonClient.getBucket(this.componentVerifyTicketKey).get();
return value == null ? null : value.toString();
}

@Override
public void setComponentVerifyTicket(String componentVerifyTicket) {
redissonClient.getBucket(this.componentVerifyTicketKey).set(componentVerifyTicket);
}

@Override
public String getComponentAccessToken() {
Object value = redissonClient.getBucket(this.componentAccessTokenKey).get();
return value == null ? null : value.toString();
}

@Override
public boolean isComponentAccessTokenExpired() {
return redissonClient.getBucket(this.componentAccessTokenKey).remainTimeToLive() < 2;
}

@Override
public void expireComponentAccessToken() {
redissonClient.getBucket(this.componentAccessTokenKey).expire(0, TimeUnit.SECONDS);
}

@Override
public void updateComponentAccessToken(String componentAccessToken, int expiresInSeconds) {
redissonClient.getBucket(this.componentAccessTokenKey).set(componentAccessToken, expiresInSeconds - 200, TimeUnit.SECONDS);
}

@Override
public String getAuthorizerRefreshToken(String appId) {
Object value = redissonClient.getBucket(this.getKey(this.authorizerRefreshTokenKey, appId)).get();
return value == null ? null : value.toString();
}

@Override
public void setAuthorizerRefreshToken(String appId, String authorizerRefreshToken) {
redissonClient.getBucket(this.getKey(this.authorizerRefreshTokenKey, appId)).set(authorizerRefreshToken);
}

@Override
public String getAuthorizerAccessToken(String appId) {
Object value = redissonClient.getBucket(this.getKey(this.authorizerAccessTokenKey, appId)).get();
return value == null ? null : value.toString();
}

@Override
public boolean isAuthorizerAccessTokenExpired(String appId) {
return redissonClient.getBucket(this.getKey(this.authorizerAccessTokenKey, appId)).remainTimeToLive() < 2;
}

@Override
public void expireAuthorizerAccessToken(String appId) {
redissonClient.getBucket(this.getKey(this.authorizerAccessTokenKey, appId)).expire(0, TimeUnit.SECONDS);
}

@Override
public void updateAuthorizerAccessToken(String appId, String authorizerAccessToken, int expiresInSeconds) {
redissonClient.getBucket(this.getKey(this.authorizerAccessTokenKey, appId)).set(authorizerAccessToken, expiresInSeconds - 200, TimeUnit.SECONDS);
}

@Override
public String getJsapiTicket(String appId) {
Object value = redissonClient.getBucket(this.getKey(this.jsapiTicketKey, appId)).get();
return value == null ? null : value.toString();
}

@Override
public boolean isJsapiTicketExpired(String appId) {
return redissonClient.getBucket(this.getKey(this.jsapiTicketKey, appId)).remainTimeToLive() < 2;
}

@Override
public void expireJsapiTicket(String appId) {
redissonClient.getBucket(this.getKey(this.jsapiTicketKey, appId)).expire(0, TimeUnit.SECONDS);
}

@Override
public void updateJsapiTicket(String appId, String jsapiTicket, int expiresInSeconds) {
redissonClient.getBucket(this.getKey(this.jsapiTicketKey, appId)).set(jsapiTicket, expiresInSeconds - 200, TimeUnit.SECONDS);
}

@Override
public String getCardApiTicket(String appId) {
Object value = redissonClient.getBucket(this.getKey(this.cardApiTicket, appId)).get();
return value == null ? null : value.toString();
}

@Override
public boolean isCardApiTicketExpired(String appId) {
return redissonClient.getBucket(this.getKey(this.cardApiTicket, appId)).remainTimeToLive() < 2;
}

@Override
public void expireCardApiTicket(String appId) {
redissonClient.getBucket(this.getKey(this.cardApiTicket, appId)).expire(0 ,TimeUnit.SECONDS);
}

@Override
public void updateCardApiTicket(String appId, String cardApiTicket, int expiresInSeconds) {
redissonClient.getBucket(this.getKey(this.cardApiTicket, appId)).set(cardApiTicket, expiresInSeconds - 200, TimeUnit.SECONDS);
}
}

+ 131
- 0
weixin-java-open/src/test/java/me/chanjar/weixin/open/api/impl/WxOpenInRedisConfigStorageTest.java 查看文件

@@ -0,0 +1,131 @@
package me.chanjar.weixin.open.api.impl;

import me.chanjar.weixin.open.api.WxOpenConfigStorage;
import me.chanjar.weixin.open.bean.WxOpenAuthorizerAccessToken;
import me.chanjar.weixin.open.bean.WxOpenComponentAccessToken;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import redis.clients.jedis.JedisPool;

public class WxOpenInRedisConfigStorageTest {

private WxOpenConfigStorage wxOpenConfigStorage;

private JedisPool pool;

@BeforeClass
public void setWxOpenConfigStorage(){
pool = new JedisPool("127.0.0.1", 6379);
this.wxOpenConfigStorage = new WxOpenInRedisConfigStorage(pool);
this.wxOpenConfigStorage.setWxOpenInfo("ComponentAppId", "ComponentAppSecret", "ComponentToken","ComponentAesKey");
this.wxOpenConfigStorage.setComponentVerifyTicket("ComponentVerifyTicket");
}

@AfterClass
public void clearResource(){
pool.close();
}

@Test
public void testGetComponentVerifyTicket() {
String componentVerifyTicket = this.wxOpenConfigStorage.getComponentVerifyTicket();
Assert.assertEquals(componentVerifyTicket, "ComponentVerifyTicket");
}

@Test
public void testSetComponentVerifyTicket() {
this.wxOpenConfigStorage.setComponentVerifyTicket("new ComponentVerifyTicket");
String componentVerifyTicket = this.wxOpenConfigStorage.getComponentVerifyTicket();
Assert.assertEquals(componentVerifyTicket, "new ComponentVerifyTicket");
}

@Test
public void testIsComponentAccessTokenExpired() {
String responseContent = "{\"component_access_token\": \"new componentAccessToken\", \"expires_in\": 10000}";
WxOpenComponentAccessToken componentAccessToken = WxOpenComponentAccessToken.fromJson(responseContent);
this.wxOpenConfigStorage.updateComponentAccessToken(componentAccessToken);
boolean expired = this.wxOpenConfigStorage.isComponentAccessTokenExpired();
Assert.assertEquals(expired, false);

this.wxOpenConfigStorage.expireComponentAccessToken();
expired = this.wxOpenConfigStorage.isComponentAccessTokenExpired();
Assert.assertEquals(expired, true);

}

@Test
public void testGetAuthorizerRefreshToken() {
String appid = "appid1";
this.wxOpenConfigStorage.setAuthorizerRefreshToken(appid, "AuthorizerRefreshToken 1");
String authorizerAccessToken = this.wxOpenConfigStorage.getAuthorizerRefreshToken(appid);
Assert.assertEquals(authorizerAccessToken, "AuthorizerRefreshToken 1");


this.wxOpenConfigStorage.setAuthorizerRefreshToken(appid, "AuthorizerRefreshToken 2");
authorizerAccessToken = this.wxOpenConfigStorage.getAuthorizerRefreshToken(appid);
Assert.assertEquals(authorizerAccessToken, "AuthorizerRefreshToken 2");
}

@Test
public void testGetAuthorizerAccessToken() {
String appid = "appid1";
String responseContent = "{\"authorizer_access_token\": \"new authorizer_access_token\",\"expires_in\": 100000}";
WxOpenAuthorizerAccessToken wxOpenAuthorizerAccessToken = WxOpenAuthorizerAccessToken.fromJson(responseContent);
this.wxOpenConfigStorage.updateAuthorizerAccessToken(appid, wxOpenAuthorizerAccessToken);
String authorizerAccessToken = this.wxOpenConfigStorage.getAuthorizerAccessToken(appid);
Assert.assertEquals(authorizerAccessToken, "new authorizer_access_token");
}

@Test
public void testIsAuthorizerAccessTokenExpired() {
String appid = "appid1";
String responseContent = "{\"authorizer_access_token\": \"new authorizer_access_token\",\"expires_in\": 100000}";
WxOpenAuthorizerAccessToken wxOpenAuthorizerAccessToken = WxOpenAuthorizerAccessToken.fromJson(responseContent);
this.wxOpenConfigStorage.updateAuthorizerAccessToken(appid, wxOpenAuthorizerAccessToken);
String authorizerAccessToken = this.wxOpenConfigStorage.getAuthorizerAccessToken(appid);
Assert.assertEquals(authorizerAccessToken, "new authorizer_access_token");

boolean expired = this.wxOpenConfigStorage.isAuthorizerAccessTokenExpired(appid);
Assert.assertEquals(expired, false);

this.wxOpenConfigStorage.expireAuthorizerAccessToken(appid);
expired = this.wxOpenConfigStorage.isAuthorizerAccessTokenExpired(appid);
Assert.assertEquals(expired, true);
}


@Test
public void testGetJsapiTicket() {
String appid = "appid1";
this.wxOpenConfigStorage.updateJsapiTicket(appid, "jsapiTicket", 100000);
String jsapiTicket = this.wxOpenConfigStorage.getJsapiTicket(appid);
Assert.assertEquals(jsapiTicket, "jsapiTicket");

boolean expired = this.wxOpenConfigStorage.isJsapiTicketExpired(appid);
Assert.assertEquals(expired, false);

this.wxOpenConfigStorage.expireJsapiTicket(appid);
jsapiTicket = this.wxOpenConfigStorage.getJsapiTicket(appid);
Assert.assertEquals(jsapiTicket, null);

expired = this.wxOpenConfigStorage.isJsapiTicketExpired(appid);
Assert.assertEquals(expired, true);
}

@Test
public void testGetCardApiTicket() {
String appid = "appid1";
this.wxOpenConfigStorage.updateCardApiTicket(appid, "new CardApiTicket", 10000);
String cardApiTicket = this.wxOpenConfigStorage.getCardApiTicket(appid);
Assert.assertEquals(cardApiTicket, "new CardApiTicket");

boolean expired = this.wxOpenConfigStorage.isCardApiTicketExpired(appid);
Assert.assertEquals(expired, false);

this.wxOpenConfigStorage.expireCardApiTicket(appid);
expired = this.wxOpenConfigStorage.isCardApiTicketExpired(appid);
Assert.assertEquals(expired, true);
}
}

+ 129
- 0
weixin-java-open/src/test/java/me/chanjar/weixin/open/api/impl/WxOpenInRedissonConfigStorageTest.java 查看文件

@@ -0,0 +1,129 @@
package me.chanjar.weixin.open.api.impl;

import me.chanjar.weixin.open.api.WxOpenConfigStorage;
import me.chanjar.weixin.open.bean.WxOpenAuthorizerAccessToken;
import me.chanjar.weixin.open.bean.WxOpenComponentAccessToken;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.redisson.config.TransportMode;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class WxOpenInRedissonConfigStorageTest {

private WxOpenConfigStorage wxOpenConfigStorage;

@BeforeClass
public void setWxOpenConfigStorage(){
Config config = new Config();
config.useSingleServer().setAddress("redis://127.0.0.1:6379")
.setDatabase(0);
config.setTransportMode(TransportMode.NIO);
RedissonClient redisson = Redisson.create(config);
this.wxOpenConfigStorage = new WxOpenInRedissonConfigStorage(redisson);
this.wxOpenConfigStorage.setWxOpenInfo("ComponentAppId", "ComponentAppSecret", "ComponentToken","ComponentAesKey");
this.wxOpenConfigStorage.setComponentVerifyTicket("ComponentVerifyTicket");
}

@Test
public void testGetComponentVerifyTicket() {
String componentVerifyTicket = this.wxOpenConfigStorage.getComponentVerifyTicket();
Assert.assertEquals(componentVerifyTicket, "ComponentVerifyTicket");
}

@Test
public void testSetComponentVerifyTicket() {
this.wxOpenConfigStorage.setComponentVerifyTicket("new ComponentVerifyTicket");
String componentVerifyTicket = this.wxOpenConfigStorage.getComponentVerifyTicket();
Assert.assertEquals(componentVerifyTicket, "new ComponentVerifyTicket");
}

@Test
public void testIsComponentAccessTokenExpired() {
String responseContent = "{\"component_access_token\": \"new componentAccessToken\", \"expires_in\": 10000}";
WxOpenComponentAccessToken componentAccessToken = WxOpenComponentAccessToken.fromJson(responseContent);
this.wxOpenConfigStorage.updateComponentAccessToken(componentAccessToken);
boolean expired = this.wxOpenConfigStorage.isComponentAccessTokenExpired();
Assert.assertEquals(expired, false);

this.wxOpenConfigStorage.expireComponentAccessToken();
expired = this.wxOpenConfigStorage.isComponentAccessTokenExpired();
Assert.assertEquals(expired, true);

}

@Test
public void testGetAuthorizerRefreshToken() {
String appid = "appid1";
this.wxOpenConfigStorage.setAuthorizerRefreshToken(appid, "AuthorizerRefreshToken 1");
String authorizerAccessToken = this.wxOpenConfigStorage.getAuthorizerRefreshToken(appid);
Assert.assertEquals(authorizerAccessToken, "AuthorizerRefreshToken 1");

this.wxOpenConfigStorage.setAuthorizerRefreshToken(appid, "AuthorizerRefreshToken 2");
authorizerAccessToken = this.wxOpenConfigStorage.getAuthorizerRefreshToken(appid);
Assert.assertEquals(authorizerAccessToken, "AuthorizerRefreshToken 2");
}

@Test
public void testGetAuthorizerAccessToken() {
String appid = "appid1";
String responseContent = "{\"authorizer_access_token\": \"new authorizer_access_token\",\"expires_in\": 100000}";
WxOpenAuthorizerAccessToken wxOpenAuthorizerAccessToken = WxOpenAuthorizerAccessToken.fromJson(responseContent);
this.wxOpenConfigStorage.updateAuthorizerAccessToken(appid, wxOpenAuthorizerAccessToken);
String authorizerAccessToken = this.wxOpenConfigStorage.getAuthorizerAccessToken(appid);
Assert.assertEquals(authorizerAccessToken, "new authorizer_access_token");
}

@Test
public void testIsAuthorizerAccessTokenExpired() {
String appid = "appid1";
String responseContent = "{\"authorizer_access_token\": \"new authorizer_access_token\",\"expires_in\": 100000}";
WxOpenAuthorizerAccessToken wxOpenAuthorizerAccessToken = WxOpenAuthorizerAccessToken.fromJson(responseContent);
this.wxOpenConfigStorage.updateAuthorizerAccessToken(appid, wxOpenAuthorizerAccessToken);
String authorizerAccessToken = this.wxOpenConfigStorage.getAuthorizerAccessToken(appid);
Assert.assertEquals(authorizerAccessToken, "new authorizer_access_token");

boolean expired = this.wxOpenConfigStorage.isAuthorizerAccessTokenExpired(appid);
Assert.assertEquals(expired, false);

this.wxOpenConfigStorage.expireAuthorizerAccessToken(appid);
expired = this.wxOpenConfigStorage.isAuthorizerAccessTokenExpired(appid);
Assert.assertEquals(expired, true);
}


@Test
public void testGetJsapiTicket() {
String appid = "appid1";
this.wxOpenConfigStorage.updateJsapiTicket(appid, "jsapiTicket", 100000);
String jsapiTicket = this.wxOpenConfigStorage.getJsapiTicket(appid);
Assert.assertEquals(jsapiTicket, "jsapiTicket");

boolean expired = this.wxOpenConfigStorage.isJsapiTicketExpired(appid);
Assert.assertEquals(expired, false);

this.wxOpenConfigStorage.expireJsapiTicket(appid);
jsapiTicket = this.wxOpenConfigStorage.getJsapiTicket(appid);
Assert.assertEquals(jsapiTicket, null);

expired = this.wxOpenConfigStorage.isJsapiTicketExpired(appid);
Assert.assertEquals(expired, true);
}

@Test
public void testGetCardApiTicket() {
String appid = "appid1";
this.wxOpenConfigStorage.updateCardApiTicket(appid, "new CardApiTicket", 10000);
String cardApiTicket = this.wxOpenConfigStorage.getCardApiTicket(appid);
Assert.assertEquals(cardApiTicket, "new CardApiTicket");

boolean expired = this.wxOpenConfigStorage.isCardApiTicketExpired(appid);
Assert.assertEquals(expired, false);

this.wxOpenConfigStorage.expireCardApiTicket(appid);
expired = this.wxOpenConfigStorage.isCardApiTicketExpired(appid);
Assert.assertEquals(expired, true);
}
}

Loading…
取消
儲存