parent
9808ac4bdf
commit
3a915103d1
|
@ -1,6 +1,7 @@
|
||||||
package com.dispose.test.common;
|
package com.dispose.test.common;
|
||||||
|
|
||||||
import com.dispose.common.ErrorCode;
|
import com.dispose.common.ErrorCode;
|
||||||
|
import com.dispose.pojo.dto.protocol.base.BaseRespStatus;
|
||||||
import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO;
|
import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO;
|
||||||
import com.dispose.service.ProtocolSecurityService;
|
import com.dispose.service.ProtocolSecurityService;
|
||||||
import com.fasterxml.jackson.core.type.TypeReference;
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
|
@ -57,12 +58,12 @@ public class CommonRestfulJson extends CommonEnvironment {
|
||||||
* @return the protocol resp dto
|
* @return the protocol resp dto
|
||||||
* @throws Exception the exception
|
* @throws Exception the exception
|
||||||
*/
|
*/
|
||||||
public <T> ProtocolRespDTO<T> performanceRestful(String reqJson, String urlPath,
|
public <T> ProtocolRespDTO<? extends BaseRespStatus> performanceRestful(String reqJson, String urlPath,
|
||||||
Class<T> subClass,
|
Class<T> subClass,
|
||||||
ErrorCode errCode,
|
ErrorCode errCode,
|
||||||
String loginToken,
|
String loginToken,
|
||||||
boolean autoDecrypt,
|
boolean autoDecrypt,
|
||||||
RequestMethod reqType) throws Exception {
|
RequestMethod reqType) throws Exception {
|
||||||
String rspValue = Helper.restfulRun(mockMvc, reqType, urlPath, loginToken, reqJson, errCode);
|
String rspValue = Helper.restfulRun(mockMvc, reqType, urlPath, loginToken, reqJson, errCode);
|
||||||
|
|
||||||
if (autoDecrypt) {
|
if (autoDecrypt) {
|
||||||
|
@ -70,7 +71,7 @@ public class CommonRestfulJson extends CommonEnvironment {
|
||||||
}
|
}
|
||||||
|
|
||||||
return objectMapper.readValue(rspValue,
|
return objectMapper.readValue(rspValue,
|
||||||
new TypeReference<ProtocolRespDTO<T>>() {
|
new TypeReference<ProtocolRespDTO<? extends BaseRespStatus>>() {
|
||||||
@Override
|
@Override
|
||||||
public Type getType() {
|
public Type getType() {
|
||||||
return Helper.createRespType(subClass);
|
return Helper.createRespType(subClass);
|
||||||
|
|
|
@ -60,7 +60,7 @@ public class Helper {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (loginToken != null && loginToken.length() > 0) {
|
if (loginToken != null) {
|
||||||
build.contentType(MediaType.APPLICATION_JSON)
|
build.contentType(MediaType.APPLICATION_JSON)
|
||||||
.header("Authorization", ConstValue.STRING_HTTP_AUTH_HEAD + loginToken)
|
.header("Authorization", ConstValue.STRING_HTTP_AUTH_HEAD + loginToken)
|
||||||
.content(sendMsgContent);
|
.content(sendMsgContent);
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
package com.dispose.test.common;
|
||||||
|
|
||||||
|
import com.dispose.common.ErrorCode;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The type Qa test item.
|
||||||
|
*
|
||||||
|
* @author <huangxin@cmhi.chinamoblie.com>
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class QATestItem {
|
||||||
|
/**
|
||||||
|
* The Priority.
|
||||||
|
*/
|
||||||
|
private TestPriority priority;
|
||||||
|
/**
|
||||||
|
* The Url path.
|
||||||
|
*/
|
||||||
|
private String urlPath;
|
||||||
|
/**
|
||||||
|
* The Method.
|
||||||
|
*/
|
||||||
|
private RequestMethod method;
|
||||||
|
/**
|
||||||
|
* The Case json value.
|
||||||
|
*/
|
||||||
|
private String caseJsonValue;
|
||||||
|
/**
|
||||||
|
* The Rsp class.
|
||||||
|
*/
|
||||||
|
private Class<?> rspClass;
|
||||||
|
/**
|
||||||
|
* The Rsp code.
|
||||||
|
*/
|
||||||
|
private ErrorCode rspCode;
|
||||||
|
/**
|
||||||
|
* The Auto login.
|
||||||
|
*/
|
||||||
|
private Boolean autoLogin;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Verify callback.
|
||||||
|
*/
|
||||||
|
private VerifyProtoRespCallback verifyCallback;
|
||||||
|
}
|
|
@ -0,0 +1,65 @@
|
||||||
|
package com.dispose.test.common;
|
||||||
|
|
||||||
|
import com.dispose.common.BaseEnum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The enum Test priority.
|
||||||
|
*
|
||||||
|
* @author <huangxin@cmhi.chinamoblie.com>
|
||||||
|
*/
|
||||||
|
public enum TestPriority implements BaseEnum {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* P 1 priority test priority.
|
||||||
|
*/
|
||||||
|
P1_PRIORITY(1, "P1 优先级"),
|
||||||
|
/**
|
||||||
|
* P 2 priority test priority.
|
||||||
|
*/
|
||||||
|
P2_PRIORITY(2, "P2 优先级"),
|
||||||
|
/**
|
||||||
|
* P 3 priority test priority.
|
||||||
|
*/
|
||||||
|
P3_PRIORITY(3, "P3 优先级"),
|
||||||
|
;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Code.
|
||||||
|
*/
|
||||||
|
private final Integer code;
|
||||||
|
/**
|
||||||
|
* The Readme.
|
||||||
|
*/
|
||||||
|
private final String readme;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new Test priority.
|
||||||
|
*
|
||||||
|
* @param code the code
|
||||||
|
* @param readme the readme
|
||||||
|
*/
|
||||||
|
TestPriority(int code, String readme) {
|
||||||
|
this.code = code;
|
||||||
|
this.readme = readme;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets value.
|
||||||
|
*
|
||||||
|
* @return the value
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Integer getValue() {
|
||||||
|
return this.code;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets description.
|
||||||
|
*
|
||||||
|
* @return the description
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getDescription() {
|
||||||
|
return this.readme;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
package com.dispose.test.common;
|
||||||
|
|
||||||
|
import com.dispose.common.ErrorCode;
|
||||||
|
import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The interface Verify proto resp callback.
|
||||||
|
*
|
||||||
|
* @param <T> the type parameter
|
||||||
|
* @author <huangxin@cmhi.chinamoblie.com>
|
||||||
|
*/
|
||||||
|
public interface VerifyProtoRespCallback<T> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verify callback.
|
||||||
|
*
|
||||||
|
* @param obj the obj
|
||||||
|
*/
|
||||||
|
void verifyCallback(ProtocolRespDTO<T> obj, ErrorCode errorCode);
|
||||||
|
}
|
|
@ -0,0 +1,95 @@
|
||||||
|
package com.dispose.test.qa.exec;
|
||||||
|
|
||||||
|
import com.dispose.pojo.dto.protocol.base.BaseRespStatus;
|
||||||
|
import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO;
|
||||||
|
import com.dispose.test.common.CommonRestfulJson;
|
||||||
|
import com.dispose.test.common.QATestItem;
|
||||||
|
import com.dispose.test.qa.testcase.v20.P1;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.FixMethodOrder;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.junit.runners.MethodSorters;
|
||||||
|
import org.junit.runners.Parameterized;
|
||||||
|
import org.junit.runners.Parameterized.Parameters;
|
||||||
|
import org.springframework.test.annotation.DirtiesContext;
|
||||||
|
import org.springframework.test.annotation.Rollback;
|
||||||
|
import org.springframework.test.context.TestContextManager;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The type Test case run.
|
||||||
|
*
|
||||||
|
* @author <huangxin@cmhi.chinamoblie.com>
|
||||||
|
*/
|
||||||
|
@RunWith(Parameterized.class)
|
||||||
|
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
|
||||||
|
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
|
||||||
|
@Slf4j
|
||||||
|
@Transactional
|
||||||
|
@Rollback
|
||||||
|
public class TestCaseRun extends CommonRestfulJson {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Rsp object.
|
||||||
|
*/
|
||||||
|
private final QATestItem rspObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new Test case run.
|
||||||
|
*
|
||||||
|
* @param rspObject the rsp object
|
||||||
|
*/
|
||||||
|
public TestCaseRun(QATestItem rspObject) {
|
||||||
|
this.rspObject = rspObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Param data collection.
|
||||||
|
*
|
||||||
|
* @return the collection
|
||||||
|
*/
|
||||||
|
@Parameters
|
||||||
|
public static Collection<QATestItem> paramData() {
|
||||||
|
return Arrays.asList(P1.getTestCase());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets up.
|
||||||
|
*
|
||||||
|
* @throws Exception the exception
|
||||||
|
*/
|
||||||
|
@Before
|
||||||
|
public void setUp() throws Exception {
|
||||||
|
TestContextManager testContextManager = new TestContextManager(getClass());
|
||||||
|
testContextManager.prepareTestInstance(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run qa p 1 test case.
|
||||||
|
*
|
||||||
|
* @throws Exception the exception
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void runQaP1TestCase() throws Exception {
|
||||||
|
ProtocolRespDTO<? extends BaseRespStatus> o = performanceRestful(rspObject.getCaseJsonValue(),
|
||||||
|
rspObject.getUrlPath(),
|
||||||
|
rspObject.getRspClass(),
|
||||||
|
rspObject.getRspCode(),
|
||||||
|
rspObject.getAutoLogin() ? getLoginToken() : "",
|
||||||
|
true,
|
||||||
|
rspObject.getMethod());
|
||||||
|
|
||||||
|
Assert.assertNotNull(o);
|
||||||
|
|
||||||
|
if (rspObject.getVerifyCallback() != null) {
|
||||||
|
rspObject.getVerifyCallback().verifyCallback(o, rspObject.getRspCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,96 @@
|
||||||
|
package com.dispose.test.qa.testcase.v20;
|
||||||
|
|
||||||
|
import com.dispose.common.ErrorCode;
|
||||||
|
import com.dispose.pojo.dto.protocol.auth.LoginRsp;
|
||||||
|
import com.dispose.pojo.dto.protocol.device.manager.AddDeviceRsp;
|
||||||
|
import com.dispose.test.common.QATestItem;
|
||||||
|
import com.dispose.test.common.TestPriority;
|
||||||
|
import com.dispose.test.common.VerifyProtoRespCallback;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The type P 1.
|
||||||
|
*
|
||||||
|
* @author <huangxin@cmhi.chinamoblie.com>
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
public class P1 {
|
||||||
|
/**
|
||||||
|
* The constant testItemArray.
|
||||||
|
*/
|
||||||
|
private static final QATestItem[] testItemArray = new QATestItem[]{
|
||||||
|
QATestItem.builder()
|
||||||
|
.priority(TestPriority.P1_PRIORITY)
|
||||||
|
.urlPath("/auth/login")
|
||||||
|
.method(RequestMethod.POST)
|
||||||
|
.caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1598580612302," +
|
||||||
|
"\"msgContent\":{\"password" +
|
||||||
|
"\":\"c3855e6b6bb120450f160ba91134522868f89d36062f2061ebeefd80817e1d58\"," +
|
||||||
|
"\"userName\":\"admin\"}}")
|
||||||
|
.rspClass(LoginRsp.class)
|
||||||
|
.rspCode(ErrorCode.ERR_OK)
|
||||||
|
.autoLogin(true)
|
||||||
|
.verifyCallback((VerifyProtoRespCallback<LoginRsp>) (v, e) -> {
|
||||||
|
Assert.assertNotNull(v);
|
||||||
|
Assert.assertNotNull(v.getMsgContent());
|
||||||
|
Assert.assertEquals((long)v.getMsgContent().getStatus(), e.getCode());
|
||||||
|
Assert.assertEquals("admin", v.getMsgContent().getUserName());
|
||||||
|
Assert.assertNotEquals(v.getMsgContent().getToken().length(), 0);
|
||||||
|
})
|
||||||
|
.build(),
|
||||||
|
|
||||||
|
QATestItem.builder()
|
||||||
|
.priority(TestPriority.P1_PRIORITY)
|
||||||
|
.urlPath("/auth/login")
|
||||||
|
.method(RequestMethod.POST)
|
||||||
|
.caseJsonValue("{\"ver\":3,\"cryptoType\":1,\"timeStamp\":1599116519744,\"code\":200," +
|
||||||
|
"\"msgContent" +
|
||||||
|
"\":\"eyJwYXNzd29yZCI6ImMzODU1ZTZiNmJiMTIwNDUwZjE2MGJhOTExMzQ1MjI4N" +
|
||||||
|
"jhmODlkMzYwNjJmMjA2MWViZWVmZDgwODE3ZTFkNTgiLCJ1c2VyTmFtZSI6ImFkbWluIn0\"}")
|
||||||
|
.rspClass(LoginRsp.class)
|
||||||
|
.rspCode(ErrorCode.ERR_OK)
|
||||||
|
.autoLogin(true)
|
||||||
|
.verifyCallback((VerifyProtoRespCallback<LoginRsp>) (v, e) -> {
|
||||||
|
Assert.assertNotNull(v);
|
||||||
|
Assert.assertNotNull(v.getMsgContent());
|
||||||
|
Assert.assertEquals((long)v.getMsgContent().getStatus(), e.getCode());
|
||||||
|
Assert.assertEquals("admin", v.getMsgContent().getUserName());
|
||||||
|
Assert.assertNotEquals(v.getMsgContent().getToken().length(), 0);
|
||||||
|
})
|
||||||
|
.build(),
|
||||||
|
|
||||||
|
QATestItem.builder()
|
||||||
|
.priority(TestPriority.P1_PRIORITY)
|
||||||
|
.urlPath("/manager/device")
|
||||||
|
.method(RequestMethod.PUT)
|
||||||
|
.caseJsonValue("{\"ver\":3,\"cryptoType\":0,\"timeStamp\":1599094454403," +
|
||||||
|
"\"msgContent\":{\"items\":[{\"ipAddr\":\"10.88.77.15\",\"ipPort\":\"\"," +
|
||||||
|
"\"deviceType\":0,\"areaCode\":0,\"deviceName\":\"中移杭研实验室迪普清洗设备\"," +
|
||||||
|
"\"manufacturer\":\"DPTech\",\"model\":\"UMC\",\"version\":\"5.7.13\"," +
|
||||||
|
"\"userName\":\"test\",\"password\":\"testpassword\"," +
|
||||||
|
"\"urlPath\":\"UMC/service/AbnormalFlowCleaningService\",\"urlType\":0," +
|
||||||
|
"\"readme\":\"实验室测试设备\",\"capacity\":[{\"capacityType\":0,\"objectType\":1," +
|
||||||
|
"\"ipType\":1,\"protectIp\":\"192.168.20.1/24\",\"reserveNetflow\":10}," +
|
||||||
|
"{\"capacityType\":1,\"objectType\":4,\"ipType\":2,\"reserveNetflow\":20}]}]}}")
|
||||||
|
.rspClass(AddDeviceRsp.class)
|
||||||
|
.rspCode(ErrorCode.ERR_LOGOUT)
|
||||||
|
.autoLogin(false)
|
||||||
|
.verifyCallback((VerifyProtoRespCallback<AddDeviceRsp>) (v, e) -> {
|
||||||
|
Assert.assertNotNull(v);
|
||||||
|
Assert.assertNotNull(v.getMsgContent());
|
||||||
|
Assert.assertEquals((long)v.getMsgContent().getStatus(), e.getCode());
|
||||||
|
})
|
||||||
|
.build()
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get test case qa test item [ ].
|
||||||
|
*
|
||||||
|
* @return the qa test item [ ]
|
||||||
|
*/
|
||||||
|
public static QATestItem[] getTestCase() {
|
||||||
|
return testItemArray;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue