完成 AliyunSmsClient 的单元测试

完成 YunpianSmsClient 的单元测试
This commit is contained in:
YunaiV
2021-04-17 17:37:41 +08:00
parent 71d2f74110
commit a432b303e6
4 changed files with 347 additions and 25 deletions

View File

@@ -24,6 +24,7 @@ import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.annotations.VisibleForTesting;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
@@ -53,7 +54,7 @@ public class AliyunSmsClient extends AbstractSmsClient {
/**
* 阿里云客户端
*/
private volatile IAcsClient acsClient;
private volatile IAcsClient client;
public AliyunSmsClient(SmsChannelProperties properties) {
super(properties, new AliyunSmsCodeMapping());
@@ -64,7 +65,7 @@ public class AliyunSmsClient extends AbstractSmsClient {
@Override
protected void doInit() {
IClientProfile profile = DefaultProfile.getProfile(ENDPOINT, properties.getApiKey(), properties.getApiSecret());
acsClient = new DefaultAcsClient(profile);
client = new DefaultAcsClient(profile);
}
@Override
@@ -81,13 +82,6 @@ public class AliyunSmsClient extends AbstractSmsClient {
return invoke(request, response -> new SmsSendRespDTO().setSerialNo(response.getBizId()));
}
private static String formatResultMsg(ClientException ex) {
if (StrUtil.isEmpty(ex.getErrorDescription())) {
return ex.getMessage();
}
return ex.getErrMsg() + " => " + ex.getErrorDescription();
}
@Override
protected List<SmsReceiveRespDTO> doParseSmsReceiveStatus(String text) throws Throwable {
List<SmsReceiveStatus> statuses = JsonUtils.parseArray(text, SmsReceiveStatus.class);
@@ -115,7 +109,8 @@ public class AliyunSmsClient extends AbstractSmsClient {
});
}
private Integer convertSmsTemplateAuditStatus(Integer templateStatus) {
@VisibleForTesting
Integer convertSmsTemplateAuditStatus(Integer templateStatus) {
switch (templateStatus) {
case 0: return SmsTemplateAuditStatusEnum.CHECKING.getStatus();
case 1: return SmsTemplateAuditStatusEnum.SUCCESS.getStatus();
@@ -124,10 +119,11 @@ public class AliyunSmsClient extends AbstractSmsClient {
}
}
private <T extends AcsResponse, R> SmsCommonResult<R> invoke(AcsRequest<T> request, Function<T, R> responseConsumer) {
@VisibleForTesting
<T extends AcsResponse, R> SmsCommonResult<R> invoke(AcsRequest<T> request, Function<T, R> responseConsumer) {
try {
// 执行发送. 由于阿里云 sms 短信没有统一的 Response但是有统一的 code、message、requestId 属性,所以只好反射
T sendResult = acsClient.getAcsResponse(request);
T sendResult = client.getAcsResponse(request);
String code = (String) ReflectUtil.getFieldValue(sendResult, "code");
String message = (String) ReflectUtil.getFieldValue(sendResult, "message");
String requestId = (String) ReflectUtil.getFieldValue(sendResult, "requestId");
@@ -143,6 +139,13 @@ public class AliyunSmsClient extends AbstractSmsClient {
}
}
private static String formatResultMsg(ClientException ex) {
if (StrUtil.isEmpty(ex.getErrorDescription())) {
return ex.getErrMsg();
}
return ex.getErrMsg() + " => " + ex.getErrorDescription();
}
/**
* 短信接收状态
*

View File

@@ -15,6 +15,7 @@ import cn.iocoder.dashboard.framework.sms.core.property.SmsChannelProperties;
import cn.iocoder.dashboard.util.json.JsonUtils;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.annotations.VisibleForTesting;
import com.yunpian.sdk.YunpianClient;
import com.yunpian.sdk.constant.YunpianConstant;
import com.yunpian.sdk.model.Result;
@@ -113,7 +114,8 @@ public class YunpianSmsClient extends AbstractSmsClient {
});
}
private Integer convertSmsTemplateAuditStatus(String checkStatus) {
@VisibleForTesting
Integer convertSmsTemplateAuditStatus(String checkStatus) {
switch (checkStatus) {
case "CHECKING": return SmsTemplateAuditStatusEnum.CHECKING.getStatus();
case "SUCCESS": return SmsTemplateAuditStatusEnum.SUCCESS.getStatus();
@@ -122,7 +124,8 @@ public class YunpianSmsClient extends AbstractSmsClient {
}
}
private <T, R> SmsCommonResult<R> invoke(Supplier<Result<T>> requestConsumer, Function<T, R> responseConsumer) throws Throwable {
@VisibleForTesting
<T, R> SmsCommonResult<R> invoke(Supplier<Result<T>> requestConsumer, Function<T, R> responseConsumer) throws Throwable {
// 执行请求
Result<T> result = requestConsumer.get();
if (result.getThrowable() != null) {