add uat test

This commit is contained in:
2021-06-07 16:45:49 +08:00
parent c30c787b0a
commit 94f76d187b
9 changed files with 223 additions and 26 deletions
@@ -1,2 +1,2 @@
#n:MR_PAY
!<md> [1615811112000, 0, null, null, -2147483648, -2147483648]
!<md> [1623061791000, 0, null, null, -2147483648, -2147483648]
+1 -1
View File
@@ -132,7 +132,7 @@
<repository>
<id>alawn.cn</id>
<name>alawn.cn</name>
<url>https://alawn.cn:1024/repository/maven-releases/</url>
<url>https://alawn.cn:2048/repository/maven-releases/</url>
</repository>
<repository>
<id>spring-milestones</id>
@@ -19,10 +19,14 @@ public class RequestDiskRow {
private String refId ;
private String amount ;
@Builder.Default
private String bankCode = "";
@Builder.Default
private String bankCity = "";
@Builder.Default
private String bankName = "";
@Builder.Default
private String bankNo = "";
@Builder.Default
private String remark = "";
public String toLine()
@@ -32,8 +36,10 @@ public class RequestDiskRow {
.append(acctName).append(deliStr)
.append(refId).append(deliStr)
.append(amount).append(deliStr)
.append(bankCode).append(deliStr)
.append(bankCity).append(deliStr)
.append(bankName).append(deliStr)
.append(bankNo).append(deliStr)
.append(remark).append("\n");
return sb.toString();
}
+13 -13
View File
@@ -1,6 +1,5 @@
package ctg.tool;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.lang.Pair;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.RandomUtil;
@@ -48,19 +47,19 @@ public class DataFactory {
{
/** 招行测试数据 */
case 0: {
Pair<String,String> card = newCmbCard();
list.add(RequestDiskRow.builder().acctName(card.getValue()).acctNo(card.getKey()).amount(amounts[i]).refId(newRefId()).build());
Pair<String,String> card = pickCmbCardRandomly();
list.add(RequestDiskRow.builder().acctName(card.getValue()).acctNo(card.getKey()).amount(amounts[i]).refId(pickRefIdRandomly()).build());
break;
}
/** 工行测试数据 */
case 1: {
Pair<String,String> card = newIcbcCard();
list.add(RequestDiskRow.builder().acctName(card.getValue()).acctNo(card.getKey()).amount(amounts[i]).refId(newRefId()).build());
Pair<String,String> card = pickIcbcCardRandomly();
list.add(RequestDiskRow.builder().acctName(card.getValue()).acctNo(card.getKey()).amount(amounts[i]).refId(pickRefIdRandomly()).build());
break;
}
/** 假数据 */
default: {
list.add(RequestDiskRow.builder().acctName(newCardName()).acctNo(newCardNo()).amount(amounts[i]).refId(newRefId()).build());
list.add(RequestDiskRow.builder().acctName(newCardName()).acctNo(pickCardNoRandomly()).amount(amounts[i]).refId(pickRefIdRandomly()).build());
break;
}
}
@@ -73,11 +72,11 @@ public class DataFactory {
* 生成工行 & 招行测试用的卡号 + 姓名
* @return
*/
public static final Pair<String,String> newCmbCard(){
public static final Pair<String,String> pickCmbCardRandomly(){
return cmbCards.get(RandomUtil.randomInt(0,cmbCards.size()));
}
public static final Pair<String,String> newIcbcCard(){
public static final Pair<String,String> pickIcbcCardRandomly(){
return icbcCards.get(RandomUtil.randomInt(0,icbcCards.size()));
}
@@ -98,12 +97,12 @@ public class DataFactory {
add(new Pair<>("6214831150131511","吴极客"));
}};
public static final String newCardNo() {
public static final String pickCardNoRandomly() {
int index = random.nextInt(cards.length - 1);
return cards[index];
}
public static String newRefId() {
public static String pickRefIdRandomly() {
return String.valueOf(IdUtil.getSnowflake(1,1).nextIdStr());
}
@@ -117,9 +116,10 @@ public class DataFactory {
return amount;
}
public static String newPostscript() { return postscripts[random.nextInt(postscripts.length - 1)]; }
public static String pickPostscriptRandomly
() { return postscripts[random.nextInt(postscripts.length - 1)]; }
public static String newCustomerId() throws SQLException {
public static String pickCustomerIdRandomly() throws SQLException {
String customerId = "";
List<Entity> rs = Db.use().query("SELECT CUSTOMER_ID FROM CAPCUSINF WHERE ENABLED = 'Y'",new HashMap());
@@ -135,7 +135,7 @@ public class DataFactory {
}
public static String newTitleId() throws SQLException {
public static String pickTitleIdRandomly() throws SQLException {
String titleId = "";
List<Entity> rs = null;
+5 -1
View File
@@ -15,7 +15,6 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
public class DiskInfo {
private String applyDate ;
private String diskNo ;
private String diskSts ;
@@ -30,4 +29,9 @@ public class DiskInfo {
private String failAmount ;
private String filePath ;
private String md5 ;
public DiskInfo(String applyDate,String diskNo) {
this.applyDate = applyDate;
this.diskNo = diskNo;
}
}
+2 -5
View File
@@ -14,10 +14,7 @@ import ctg.tool.FastDFS;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.math.BigDecimal;
import java.sql.SQLException;
import java.util.*;
import net.lingala.zip4j.ZipFile;
@@ -49,8 +46,8 @@ public class DiskApplyRequestTest {
DiskApplyRequest request = DiskApplyRequest.builder()
.applyDate(DateUtil.format(new Date(),"YYYYMMdd"))
.customerId(DataFactory.newCustomerId())
.titleId(DataFactory.newTitleId())
.customerId(DataFactory.pickCustomerIdRandomly())
.titleId(DataFactory.pickTitleIdRandomly())
.diskDesc("代发工资").build();
File file = DiskTool.newSimpleDiskFile(request.getCustomerId(),request.getTitleId(),"代发工资",10,new BigDecimal(50000.00));
+2 -2
View File
@@ -26,8 +26,8 @@ public class DiskApplyTest {
DiskApplyRequest body = DiskApplyRequest.builder()
.diskNo("lakjdfklasjdklfjaslkdf")
.applyDate(DateUtil.format(new Date(),"YYYYMMdd"))
.customerId(DataFactory.newCustomerId())
.titleId(DataFactory.newTitleId())
.customerId(DataFactory.pickCustomerIdRandomly())
.titleId(DataFactory.pickTitleIdRandomly())
.diskDesc("代发工资").build();
Api<DiskApplyRequest> request = new Api<>("diskApply",body);
+2 -3
View File
@@ -28,7 +28,6 @@ import org.w3c.dom.Document;
import javax.xml.xpath.XPathConstants;
import java.io.File;
import java.io.FileNotFoundException;
import java.lang.reflect.InvocationTargetException;
import java.math.BigDecimal;
import java.util.Date;
@@ -96,8 +95,8 @@ public class MixedTest {
public DiskInfo diskApplySimpleTest() throws Exception {
DiskApplyRequest request = DiskApplyRequest.builder()
.applyDate(DateUtil.format(new Date(),"YYYYMMdd"))
.customerId(DataFactory.newCustomerId())
.titleId(DataFactory.newTitleId())
.customerId(DataFactory.pickCustomerIdRandomly())
.titleId(DataFactory.pickTitleIdRandomly())
.diskDesc("代发工资").build();
int totalCount = RandomUtil.randomInt(0,3000);
+191
View File
@@ -0,0 +1,191 @@
package hro;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.XmlUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.setting.Setting;
import ctg.constant.PropConstants;
import ctg.entity.api.Api;
import ctg.entity.api.DiskApplyRequest;
import ctg.entity.api.DiskResultRequest;
import ctg.tool.DataFactory;
import ctg.tool.DiskTool;
import ctg.tool.FastDFS;
import entity.DiskInfo;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import net.lingala.zip4j.ZipFile;
import net.lingala.zip4j.model.ZipParameters;
import net.lingala.zip4j.model.enums.AesKeyStrength;
import net.lingala.zip4j.model.enums.EncryptionMethod;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.w3c.dom.Document;
import javax.xml.xpath.XPathConstants;
import java.io.File;
import java.io.FileNotFoundException;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Author: Alawn
* @Description:
* @Date: Create in 下午4:10 2021/2/24
*/
@Slf4j
public class UatTest {
private static String baseURL;
private static String secretKey;
private static String zipPassword;
@BeforeAll
static void initProp() {
Setting setting = new Setting("prop.setting");
baseURL = setting.getStr("baseURL");
secretKey = setting.getStr("secretKey");
zipPassword = setting.getStr("zipPassword");
}
@Test
public void overAllTest() throws Exception {
DiskInfo disk;
try{
/** 生成测试批次 */
String customerId = DataFactory.pickCustomerIdRandomly();
String titleId = DataFactory.pickTitleIdRandomly();
int totalCount = RandomUtil.randomInt(0,3000);
BigDecimal totalAmount = RandomUtil.randomBigDecimal(new BigDecimal(1),new BigDecimal(1000000));
File file = DiskTool.newSimpleDiskFile(customerId,titleId,"代发工资",totalCount,totalAmount);
disk = diskApply(customerId,titleId,file);
}
catch (Exception e) {
log.error(e.getMessage());
return;
}
log.info("disk:{}",disk);
log.info("等待30秒后查询结果...");
ThreadUtil.sleep(30000);
try {
diskResult(disk.getApplyDate(),disk.getDiskNo());
}
catch (Exception e) {
log.error("error:{}",e.getMessage());
return;
}
log.info("disk:{}",disk);
}
@Test
public void resultTest() throws Exception {
DiskInfo disk = null;
try {
disk = diskResult("20210607","3b07422666b44315ac62b8bc55b207c2");
}
catch (Exception e) {
log.error("error:{}",e.getMessage());
return;
}
log.info("disk:{}",disk);
}
@SneakyThrows
public DiskInfo diskResult(String applyDate,String diskNo) {
DiskResultRequest request = DiskResultRequest.builder().applyDate(applyDate).diskNo(diskNo).build();
DiskInfo disk = new DiskInfo(applyDate,diskNo);
Api<DiskResultRequest> api = new Api<>("diskResult",request);
String response = HttpUtil.createPost(PropConstants.baseURL).header("Signature",api.signature()).body(api.toData()).setConnectionTimeout(3000).timeout(3000).execute().body();
Document doc = XmlUtil.readXML(response);
String respCode = (String) XmlUtil.getByXPath("//root/head/respCode",doc, XPathConstants.STRING);
String respMessage = (String) XmlUtil.getByXPath("//root/head/respMessage",doc, XPathConstants.STRING);
log.info("[{}]:[{}]",respCode,respMessage);
if(respCode.equals("00")) {
disk.setDiskSts((String) XmlUtil.getByXPath("//root/body/diskSts",doc, XPathConstants.STRING));
disk.setDiskMessage((String) XmlUtil.getByXPath("//root/body/diskMessage",doc, XPathConstants.STRING));
disk.setLastDate((String) XmlUtil.getByXPath("//root/body/lastDate",doc, XPathConstants.STRING));
disk.setLastTime((String) XmlUtil.getByXPath("//root/body/lastTime",doc, XPathConstants.STRING));
disk.setTotalCount((String) XmlUtil.getByXPath("//root/body/totalCount",doc, XPathConstants.STRING));
disk.setTotalAmount((String) XmlUtil.getByXPath("//root/body/totalAmount",doc, XPathConstants.STRING));
disk.setFilePath((String) XmlUtil.getByXPath("//root/body/filePath",doc, XPathConstants.STRING));
disk.setSuccAmount((String) XmlUtil.getByXPath("//root/body/succAmount",doc, XPathConstants.STRING));
disk.setSuccCount((String) XmlUtil.getByXPath("//root/body/succCount",doc, XPathConstants.STRING));
disk.setFailAmount((String) XmlUtil.getByXPath("//root/body/failAmount",doc, XPathConstants.STRING));
disk.setFailCount((String) XmlUtil.getByXPath("//root/body/failCount",doc, XPathConstants.STRING));
disk.setMd5((String) XmlUtil.getByXPath("//root/body/md5",doc, XPathConstants.STRING));
return disk;
}
else {
throw new Exception(respMessage);
}
}
public DiskInfo diskApply(String customerId,String titleId,File file) throws Exception {
// DiskApplyRequest request = DiskApplyRequest.builder()
// .applyDate(DateUtil.format(new Date(),"YYYYMMdd"))
// .customerId(DataFactory.newCustomerId())
// .titleId(DataFactory.newTitleId())
// .diskDesc("代发工资").build();
DiskApplyRequest request = DiskApplyRequest.builder()
.applyDate(DateUtil.format(new Date(),"YYYYMMdd"))
.customerId(customerId)
.titleId(titleId)
.diskDesc("代发工资").build();
// int totalCount = RandomUtil.randomInt(0,3000);
// BigDecimal totalAmount = RandomUtil.randomBigDecimal(new BigDecimal(1),new BigDecimal(1000000));
// File file = DiskTool.newSimpleDiskFile(request.getCustomerId(),request.getTitleId(),"代发工资",totalCount,totalAmount);
request.setDiskNo(file.getName());
log.info("disk:{}", file.getAbsolutePath());
/** 文件压缩 */
if(!file.exists() || !file.isFile()) {
throw new FileNotFoundException();
}
File disk = new File(file.getParent() + "/" + file.getName() + ".zip");
if ("".equals(zipPassword)) {
ZipParameters zipParameters = new ZipParameters();
zipParameters.setEncryptFiles(true);
zipParameters.setEncryptionMethod(EncryptionMethod.AES);
zipParameters.setAesKeyStrength(AesKeyStrength.KEY_STRENGTH_256);
new ZipFile(disk, zipPassword.toCharArray()).addFile(file, zipParameters);
}
else {
new ZipFile(disk).addFile(file);
}
/** 上传文件 */
String fid = FastDFS.upload(disk);
log.info("fid:{}",fid);
request.setFilePath(fid);
request.setFileVersion("");
request.setFilePath(fid);
request.setMd5(SecureUtil.md5(disk));
/** 送盘请求 */
Api<DiskApplyRequest> api = new Api<>("diskApply",request);
log.info("diskApply.request:[{}]",api.toData());
String response = HttpUtil.createPost(baseURL).header("Signature",api.signature()).body(api.toData()).setConnectionTimeout(3000).timeout(3000).execute().body();
log.info("diskApply.response:[{}]",response);
Document doc = XmlUtil.readXML(response);
String respCode = (String) XmlUtil.getByXPath("//root/head/respCode",doc, XPathConstants.STRING);
String respMessage = (String) XmlUtil.getByXPath("//root/head/respMessage",doc, XPathConstants.STRING);
if(!"00".equals(respCode)) {
throw new Exception(respMessage);
}
return DiskInfo.builder().diskNo(request.getDiskNo()).applyDate(request.getApplyDate()).build();
}
}