Commit 3c6a31e0 by xyy

Merge remote-tracking branch 'origin/master'

parents 16a2c32a d3ea1012
......@@ -9,7 +9,6 @@ import com.xiaomai.utils.RandomStringUtil;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import javax.annotation.Resource;
import java.util.ArrayList;
......
......@@ -45,19 +45,20 @@ public class TestImportDeposit extends XMBaseTest {
//2、获取签名
JSONObject object = new JSONObject();
object.put("tenantId", xmAppApi.getLoginInfo().getBrandId());
object.put("tenantType", "BRAND");
object.put("brandId", xmAppApi.getLoginInfo().getBrandId());
// object.put("tenantType", "BRAND");
object.put("resourceName",filePathName);
object.put("resourceNameToMD5",false);
object.put("bizCode","IMPORT_TASK");
xmAppApi.doRequest(RequestType.JSON, params, object.toString(), headers).assetsSuccess(true);
JSONObject result1 = xmAppApi.getBodyInJSON();
String resourceId = XMJSONPath.readPath(result1, "$.result.resourceId");
String accessId = XMJSONPath.readPath(result1, "$.result.accessId");
String accessId = XMJSONPath.readPath(result1, "$.result.accessKeyId");
String policy = XMJSONPath.readPath(result1, "$.result.policy");
String signature = XMJSONPath.readPath(result1, "$.result.signature");
String key = XMJSONPath.readPath(result1, "$.result.key");
String callback = XMJSONPath.readPath(result1, "$.result.callback");
String securityToken = XMJSONPath.readPath(result1, "$.result.securityToken");
String host = XMJSONPath.readPath(result1, "$.result.host");
String time = XMJSONPath.readPath(result1, "$.result.extAttrs");
JSONObject time1 = JSONObject.parseObject(time);
......@@ -72,12 +73,15 @@ public class TestImportDeposit extends XMBaseTest {
signatureVO.setPolicy(policy);
signatureVO.setSignature(signature);
signatureVO.setCallback(callback);
signatureVO.setSecurityToken(securityToken);
signatureVO.setExtAttrs(time1.getString("q-key-time"));
signatureVO.setHost(host);
signatureVO.setResourceId(Long.valueOf(resourceId));
String result = String.valueOf(ResourceUtil.uploadFileContentToTencent(inputStream, filePathName, signatureVO, 5000,"multipart/form-data"));
Assert.assertEquals(result, "true");
Thread.sleep(6000);
//4.创建任务
JSONObject result2 = importTools.createImportTask("DEPOSIT_CARD_ORDER",resourceId,null,"");
String recordId = XMJSONPath.readPath(result2, "$.result");
......
......@@ -50,19 +50,20 @@ public class TestImportMember extends XMBaseTest {
//2、获取签名
JSONObject object = new JSONObject();
object.put("tenantId", xmAppApi.getLoginInfo().getBrandId());
object.put("tenantType", "BRAND");
object.put("brandId", xmAppApi.getLoginInfo().getBrandId());
// object.put("tenantType", "BRAND");
object.put("resourceName",filePathName);
object.put("resourceNameToMD5",false);
object.put("bizCode","IMPORT_TASK");
xmAppApi.doRequest(RequestType.JSON, params, object.toString(), headers).assetsSuccess(true);
JSONObject result1 = xmAppApi.getBodyInJSON();
String resourceId = XMJSONPath.readPath(result1, "$.result.resourceId");
String accessId = XMJSONPath.readPath(result1, "$.result.accessId");
String accessId = XMJSONPath.readPath(result1, "$.result.accessKeyId");
String policy = XMJSONPath.readPath(result1, "$.result.policy");
String signature = XMJSONPath.readPath(result1, "$.result.signature");
String key = XMJSONPath.readPath(result1, "$.result.key");
String callback = XMJSONPath.readPath(result1, "$.result.callback");
String securityToken = XMJSONPath.readPath(result1, "$.result.securityToken");
String host = XMJSONPath.readPath(result1, "$.result.host");
String time = XMJSONPath.readPath(result1, "$.result.extAttrs");
JSONObject time1 = JSONObject.parseObject(time);
......@@ -77,12 +78,14 @@ public class TestImportMember extends XMBaseTest {
signatureVO.setPolicy(policy);
signatureVO.setSignature(signature);
signatureVO.setCallback(callback);
signatureVO.setSecurityToken(securityToken);
signatureVO.setExtAttrs(time1.getString("q-key-time"));
signatureVO.setHost(host);
signatureVO.setResourceId(Long.valueOf(resourceId));
String result = String.valueOf(ResourceUtil.uploadFileContentToTencent(inputStream, filePathName, signatureVO, 5000,"multipart/form-data"));
Assert.assertEquals(result, "true");
Thread.sleep(6000);
//4.创建任务
JSONObject result2 = importTools.createImportTask("MEMBER",resourceId,"REPLACE_DUPLICATES","");
String recordId = XMJSONPath.readPath(result2, "$.result");
......
......@@ -46,19 +46,21 @@ public class TestImportMemberCard extends XMBaseTest {
//2、获取签名
JSONObject object = new JSONObject();
object.put("tenantId", xmAppApi.getLoginInfo().getBrandId());
object.put("tenantType", "BRAND");
// object.put("tenantId", xmAppApi.getLoginInfo().getBrandId()); //新接口参数更换成其他
// object.put("tenantType", "BRAND"); //新接口参数更换成其他
object.put("brandId", xmAppApi.getLoginInfo().getBrandId());
object.put("resourceName",filePathName);
object.put("resourceNameToMD5",false);
object.put("bizCode","IMPORT_TASK");
xmAppApi.doRequest(RequestType.JSON, params, object.toString(), headers).assetsSuccess(true);
JSONObject result1 = xmAppApi.getBodyInJSON();
String resourceId = XMJSONPath.readPath(result1, "$.result.resourceId");
String accessId = XMJSONPath.readPath(result1, "$.result.accessId");
String accessId = XMJSONPath.readPath(result1, "$.result.accessKeyId");
String policy = XMJSONPath.readPath(result1, "$.result.policy");
String signature = XMJSONPath.readPath(result1, "$.result.signature");
String key = XMJSONPath.readPath(result1, "$.result.key");
String callback = XMJSONPath.readPath(result1, "$.result.callback");
String securityToken = XMJSONPath.readPath(result1, "$.result.securityToken");
String host = XMJSONPath.readPath(result1, "$.result.host");
String time = XMJSONPath.readPath(result1, "$.result.extAttrs");
JSONObject time1 = JSONObject.parseObject(time);
......@@ -73,12 +75,14 @@ public class TestImportMemberCard extends XMBaseTest {
signatureVO.setPolicy(policy);
signatureVO.setSignature(signature);
signatureVO.setCallback(callback);
signatureVO.setSecurityToken(securityToken);
signatureVO.setExtAttrs(time1.getString("q-key-time"));
signatureVO.setHost(host);
signatureVO.setResourceId(Long.valueOf(resourceId));
String result = String.valueOf(ResourceUtil.uploadFileContentToTencent(inputStream, filePathName, signatureVO, 5000,"multipart/form-data"));
Assert.assertEquals(result, "true");
Thread.sleep(6000);
//4.创建任务
JSONObject result2 = importTools.createImportTask("MEMBER_CARD_ORDER",resourceId,null,"");
String recordId = XMJSONPath.readPath(result2, "$.result");
......
package com.xiaomai.cases.polar.memberCard.MemberCardTimeSale;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.XMBaseTest;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component("CardTimeSaleMinTools")
public class CardTimeSaleMinTools extends XMBaseTest {
/**
* @param
* @description:小程序查看秒杀活动列表
* @author: yangjian
* @param activityId 活动id
* @param state 活动状态
**/
public JSONObject getStudioActivityPage(String activityId,String state,String memberId, DataUserInfo... dataUserInfos) {
dataApi.setApiModule(ApiModule.Lunar_Card)
.setApiName("API_getStudioActivityPage")
.setTerminal(Terminal.minApp);
super.beforeDataRequest(dataUserInfos);
List<String> activityIds = new ArrayList<>();
activityIds.add(activityId);
JSONObject jsonObject = new JSONObject();
jsonObject.put("current", 0);
jsonObject.put("size", 50);
jsonObject.put("state", state);//null全部,PROCESSING开抢中,WAITING即将开抢
jsonObject.put("activityIds", activityIds);//活动ID
jsonObject.put("memberId", memberId);//String memberId = userTools.getMemberInfo().getString("memberId");
jsonObject.put("studioId", dataApi.getLoginInfo().getStudioId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response = dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:秒杀活动查看会员卡详情
* @author: yangjian
* @param activityId 活动id
**/
public JSONObject findTenantCardDetailById(String id,String activityId,String memberId, DataUserInfo... dataUserInfos) {
dataApi.setApiModule(ApiModule.Lunar_Card)
.setApiName("API_findTenantCardDetailById")
.setTerminal(Terminal.minApp);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject = new JSONObject();
jsonObject.put("activityId", activityId);
jsonObject.put("id", id);//会员卡ID
jsonObject.put("memberId", memberId);//String memberId = userTools.getMemberInfo().getString("memberId");
jsonObject.put("studioId", dataApi.getLoginInfo().getStudioId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response = dataApi.getBodyInJSON();
return response;
}
/**
* @param
* @description:预约秒杀活动
* @author: yangjian
* @param activityId 活动id
* @param cancel 预约状态
**/
public JSONObject reserveRemindOrCancel(String cancel,String activityId,String memberId, DataUserInfo... dataUserInfos) {
dataApi.setApiModule(ApiModule.Lunar_Card)
.setApiName("API_reserveRemindOrCancel")
.setTerminal(Terminal.minApp);
super.beforeDataRequest(dataUserInfos);
JSONObject jsonObject = new JSONObject();
jsonObject.put("activityId", activityId);
jsonObject.put("cancel", cancel);//预约状态:true为取消预约提醒,false为预约提醒
jsonObject.put("memberId", memberId);//String memberId = userTools.getMemberInfo().getString("memberId");
jsonObject.put("studioId", dataApi.getLoginInfo().getStudioId());
dataApi.doRequest(RequestType.JSON, dataparams, jsonObject.toJSONString(), dataheadrs).assetsSuccess(true);
JSONObject response = dataApi.getBodyInJSON();
return response;
}
}
......@@ -51,7 +51,7 @@ public class MemberCardTimeSaleTools extends XMBaseTest {
* @param membercardId 关联的会员卡ID
* @param activityName 秒杀活动名称
**/
public JSONObject create(String membercardId,String activityName,Boolean publish, DataUserInfo... dataUserInfos) {
public JSONObject create(String membercardId,String activityName,Boolean publish,long endTime,long startTime, DataUserInfo... dataUserInfos) {
dataApi.setApiModule(ApiModule.Polar_Card)
.setApiName("API_createfalshsale")
......@@ -66,8 +66,11 @@ public class MemberCardTimeSaleTools extends XMBaseTest {
JSONObject jsonObject = new JSONObject();
jsonObject.put("activityName", activityName);
jsonObject.put("activityType", "SECKILL");//活动类型为秒杀
jsonObject.put("endTime", TimeUtils.getTodayEndTime());//活动结束时间为今天24点
jsonObject.put("startTime", TimeUtils.getTodayTime());//活动开始时间为今天0点
//jsonObject.put("endTime", TimeUtils.getTodayEndTime());//活动结束时间为今天24点
//jsonObject.put("startTime", TimeUtils.getTodayTime());//活动开始时间为今天0点
jsonObject.put("endTime", endTime);//活动结束时间为今天24点
jsonObject.put("startTime", startTime);//活动开始时间为今天0点
jsonObject.put("applyMemberStates", applyMemberStates);//活动可参与用户
jsonObject.put("autoCancelMinutes", "5");//自动取消订单时间
jsonObject.put("commodityId", membercardId);//活动的会员卡商品
......
......@@ -33,7 +33,7 @@ public class TestPublish extends BaseTestImpl {
String title ="未发布的秒杀活动"+ TimeUtils.getCurrentTime();
JSONObject result1 =MemberCardTimeSaleTools.getStudioActivityPage("UNPUBLISHED");//未发布条数;
int before=Integer.parseInt(result1.getJSONObject("result").getString("total"));
String activeid = MemberCardTimeSaleTools.create(cardId,title,false).getString("result");//创建一个未发布的秒杀活动
String activeid = MemberCardTimeSaleTools.create(cardId,title,false,TimeUtils.getTodayEndTime(),TimeUtils.getTodayTime()).getString("result");//创建一个未发布的秒杀活动
JSONObject result2 =MemberCardTimeSaleTools.getStudioActivityPage("UNPUBLISHED");//未发布条数;
int after=Integer.parseInt(result2.getJSONObject("result").getString("total"));
Assert.assertEquals(after,before+1);//未发布活动+1
......
package com.xiaomai.cases.polar.memberCard.MemberCardTimeSale;
import com.alibaba.fastjson.JSONObject;
import com.xiaomai.cases.lunar.order.OrderCTools;
import com.xiaomai.cases.lunar.user.UserTools;
import com.xiaomai.cases.polar.finance.order.OrderTools;
import com.xiaomai.cases.polar.luckyDraw.LuckyDrawTools;
import com.xiaomai.cases.polar.memberCard.CardTools;
import com.xiaomai.client.DataUserInfo;
import com.xiaomai.enums.ApiModule;
import com.xiaomai.enums.LoginAccount;
import com.xiaomai.enums.RequestType;
import com.xiaomai.enums.Terminal;
import com.xiaomai.utils.RandomStringUtil;
import com.xiaomai.utils.TimeUtils;
import com.xiaomai.utils.XMBaseTest;
import com.xiaomai.utils.XMJSONPath;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import javax.annotation.Resource;
public class TestPurchaseCardTimeSale extends XMBaseTest {
DataUserInfo info = new DataUserInfo();
@Resource(name = "memberCardTimeSaleTools")
MemberCardTimeSaleTools memberCardTimeSaleTools;
@Resource(name = "cardTools")
CardTools cardTools;
@Resource(name = "userTools")
UserTools userTools;
@Resource(name = "CardTimeSaleMinTools")
CardTimeSaleMinTools CardTimeSaleMinTools;
@Resource(name = "orderCTools")
OrderCTools orderCTools;
@Resource(name = "orderTools")
OrderTools orderTools;
@BeforeMethod
public void beforeTest(){
xmAppApi.setApiModule(ApiModule.Lunar_Order)
.setApiName("API_purchaseCard")
.setLoginUser(LoginAccount.GYM_MINIAPPC)
.setTerminal(Terminal.minApp);
dal.setCase_owner("yangjian")
.setCase_name(Thread.currentThread().getStackTrace()[1].getFileName().split("\\.")[0]);
super.beforeTest();
}
@Test(description = "参与秒杀活动")
public void testPurchaseCardTimeSale() throws InterruptedException {
info.setTerminal(Terminal.B);
info.setLoginUser(LoginAccount.GYM_PROD);
String cardId = cardTools.memberCardCreate("用于秒杀活动的会员卡"+ TimeUtils.getCurrentTime(),info).getString("result");//创建一张用于秒杀活动的会员卡
String title ="预约秒杀活动"+ TimeUtils.getCurrentTime();
String activeid = memberCardTimeSaleTools.create(cardId,title,true,TimeUtils.getTodayEndTime(),TimeUtils.getCurrentTime_AddMinute(6),info).getString("result");//创建并发布秒杀活动 活动开始前5分钟可以预约
String memberId = userTools.getMemberInfo().getString("memberId");
CardTimeSaleMinTools.getStudioActivityPage(activeid,"WAITING",memberId);
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.records[0].activityId"), activeid, "即将开始的活动没有新建的秒杀活动");//断言即将开始活动列表有目标活动
CardTimeSaleMinTools.reserveRemindOrCancel("false",activeid,memberId);//预约秒杀活动
CardTimeSaleMinTools.findTenantCardDetailById(cardId,activeid,memberId);
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.activityVO.reserveRemind"), "true", "预约秒杀活动失败");//断言目标活动已预约完成
CardTimeSaleMinTools.reserveRemindOrCancel("true",activeid,memberId);//取消预约秒杀活动
CardTimeSaleMinTools.findTenantCardDetailById(cardId,activeid,memberId);
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(), "$.result.activityVO.reserveRemind"), "false", "预约秒杀活动失败");//断言目标活动已取消预约
Thread.sleep(5000);
String cardId1 = cardTools.memberCardCreate("用于秒杀活动的会员卡"+ TimeUtils.getCurrentTime(),info).getString("result");//创建一张用于秒杀活动的会员卡
String title1 ="参与秒杀活动"+ TimeUtils.getCurrentTime();
String activeid1 = memberCardTimeSaleTools.create(cardId1,title1,true,TimeUtils.getTodayEndTime(),TimeUtils.getTodayTime(),info).getString("result");//创建一个已开始的活动的秒杀活动
int before = Integer.parseInt(XMJSONPath.readPath(CardTimeSaleMinTools.findTenantCardDetailById(cardId1,activeid1,memberId), "$.result.activityVO.salesVolumeShow"));//初始秒杀数量
JSONObject jsonObject = new JSONObject();
jsonObject.put("activatePattern","PURCHASE");
jsonObject.put("cardId",cardId1);
jsonObject.put("cardSnapshotId",cardId1);
jsonObject.put("memberId",memberId);
jsonObject.put("memo","自动化买秒杀活动会员卡");
jsonObject.put("receivableAmount","0.00");
jsonObject.put("studioId",xmAppApi.getLoginInfo().getStudioId());
jsonObject.put("objectId", RandomStringUtil.randomString(16));
jsonObject.put("depositCardId",null);
jsonObject.put("depositAmount","0.00");
jsonObject.put("commodityCardType","MEMBER_CARD");
jsonObject.put("activityId",activeid1);
jsonObject.put("activityAmount",1);
xmAppApi.doRequest(RequestType.JSON,params,jsonObject.toString(),headers).assetsSuccess(true);
String voucherId = xmAppApi.getBodyInJSON().getJSONObject("result").getString("voucherId");//订单ID
int after = Integer.parseInt(XMJSONPath.readPath(CardTimeSaleMinTools.findTenantCardDetailById(cardId1,activeid1,memberId), "$.result.activityVO.salesVolumeShow"));//参与秒杀活动后,已秒数量
Assert.assertEquals(after,before+1);//参与秒杀活动后,秒杀人数+1
Thread.sleep(3000);
//校验C端订单详情
Assert.assertEquals(XMJSONPath.readPath(orderCTools.getDetail(voucherId),"$.result.state"),"PAID","创建签单订单成功,但订单状态不是已完成");
Assert.assertEquals(XMJSONPath.readPath(orderCTools.getDetail(voucherId),"$.result.source"),"ONLINE_MALL","C端创建的签单订单,订单来源非会员创建");
cardTools.getUserMemberCardList(memberId,"MEMBER",info);
String memberAccountCardId=XMJSONPath.readPath(dataApi.getApi_response(),"$.result[0].id");
cardTools.memberCardFindDetailById(memberAccountCardId,info);
Assert.assertEquals(XMJSONPath.readPath(dataApi.getApi_response(),"$.result.tradeOrderId"),voucherId,"B端售卖记录非秒杀活动对应会员卡的记录");//断言B端第一条的售卖记录的订单为目标售卖记录
orderTools.discard(voucherId,"其他","自动化作废秒杀订单",info);
int after1 = Integer.parseInt(XMJSONPath.readPath(CardTimeSaleMinTools.findTenantCardDetailById(cardId1,activeid1,memberId), "$.result.activityVO.salesVolumeShow"));//作废订单后,秒杀数量
Assert.assertEquals(after1,before);//初始秒杀数量和作废后秒杀数量一致
}
}
......@@ -43,7 +43,7 @@ public class Testflashsaleedit extends BaseTestImpl {
JSONObject result =MemberCardTimeSaleTools.getStudioActivityPage1("");//所有活动条数;
int beforecount=Integer.parseInt(result.getJSONObject("result").getString("total"));
String title ="秒杀活动"+ TimeUtils.getCurrentTime();
String activeid = MemberCardTimeSaleTools.create(cardId,title,true).getString("result");//创建并发布一个秒杀活动
String activeid = MemberCardTimeSaleTools.create(cardId,title,true,TimeUtils.getTodayEndTime(),TimeUtils.getTodayTime()).getString("result");//创建并发布一个秒杀活动
JSONObject result1 =MemberCardTimeSaleTools.getStudioActivityPage1("");//所有活动条数;
int aftercount1=Integer.parseInt(result1.getJSONObject("result").getString("total"));
......
......@@ -24,6 +24,7 @@ public class SignatureVO {
private String extAttrs;
//回调地址
private String callback;
private String securityToken;
private String algorithm;
......@@ -107,4 +108,14 @@ public class SignatureVO {
public void setAlgorithm(String algorithm) {
this.algorithm = algorithm;
}
public String getSecurityToken() {
return securityToken;
}
public SignatureVO setSecurityToken(String securityToken) {
this.securityToken = securityToken;
return this;
}
}
......@@ -160,6 +160,7 @@ public class ResourceUtil {
formFields.put("q-signature", signatureVO.getSignature());
formFields.put("success_action_status", RESPONSE_STATUS);
formFields.put("x-cos-callback", signatureVO.getCallback());
formFields.put("x-cos-security-token", signatureVO.getSecurityToken());
formFields.put("q-key-time", signatureVO.getExtAttrs());
// 根据以上表单参数,构造最开始的body部分
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment