diff --git a/src/test/java/com/dispose/controller/DeviceNodeManagerControlllerExceptionSmokeTest.java b/src/test/java/com/dispose/controller/DeviceNodeManagerControlllerExceptionSmokeTest.java new file mode 100644 index 00000000..858bc361 --- /dev/null +++ b/src/test/java/com/dispose/controller/DeviceNodeManagerControlllerExceptionSmokeTest.java @@ -0,0 +1,263 @@ +package com.dispose.controller; + +import com.dispose.Global.InitTestEnvironment; +import com.dispose.common.ErrorCode; +import com.dispose.pojo.entity.DisposeDevice; +import com.dispose.pojo.po.MReturnType; +import com.dispose.pojo.po.ReturnStatus; +import com.dispose.pojo.vo.auth.LoginRsp; +import com.dispose.pojo.vo.common.IDArrayReq; +import com.dispose.pojo.vo.common.IDReturnStatus; +import com.dispose.pojo.vo.device.AddNodeRetData; +import com.dispose.pojo.vo.device.AddNodeRsp; +import com.dispose.pojo.vo.task.StartTaskRsp; +import com.dispose.service.DisposeNodeManager; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.slf4j.Slf4j; +import org.junit.Assert; +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.MethodSorters; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.MediaType; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; + +import javax.annotation.Resource; + +import java.util.ArrayList; +import java.util.List; + +import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@AutoConfigureMockMvc +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +@Slf4j +public class DeviceNodeManagerControlllerExceptionSmokeTest extends InitTestEnvironment { + /** + * The Mock mvc. + */ + @Resource + private MockMvc mockMvc; + + /** + * The Object mapper. + */ + @Resource + private ObjectMapper objectMapper; + + /** + * The Dispose device manager. + */ + @Resource + private DisposeNodeManager disposeNodeManager; + + /** + * test Determine whether the ipAddr exists. + */ + public MReturnType verifyIpAddr(String ipAddr) { + MReturnType ret; + boolean result = false; + DisposeDevice disposeDevice = disposeNodeManager.getDisposeDeviceByIp(ipAddr); + if (disposeDevice != null) { + result = true; + } + + ret = new MReturnType<>(result, ipAddr); + return ret; + } + + /** + * test Determine whether the Id exists. + */ + public MReturnType verifyId(String id) { + MReturnType ret; + boolean result = false; + DisposeDevice disposeDevice = disposeNodeManager.getDisposeDeviceById(Long.valueOf(id)); + if (disposeDevice != null) { + result = true; + } + + ret = new MReturnType<>(result, id); + return ret; + } + + /** + * A 1 add Normal DeviceNodeManager test. + * + * @throws Exception the exception + */ + @Test + public void a1_addNormalDeviceNodeManager() throws Exception { + String reqData = "{\"ver\":2,\"cryptoType\":0,\"timeStamp\":1587628826908," + + "\"msgContent\":\"{\\\"items\\\":[{\\\"areaCode\\\":0,\\\"ipAddr\\\":\\\"10.88.77.15\\\"," + + "\\\"manufacturer\\\":\\\"DPTech\\\",\\\"model\\\":\\\"UMC\\\"," + + "\\\"name\\\":\\\"中移杭研实验室清洗设备\\\",\\\"readme\\\":\\\"实验室测试设备\\\"," + + "\\\"type\\\":0,\\\"version\\\":\\\"5.7.13\\\"}]}\"}"; + + String ret = mockMvc.perform(MockMvcRequestBuilders + .put("/manager/device") + .contentType(MediaType.APPLICATION_JSON) + .header("Authorization", "Bearer " + getLogToken()) + .content(reqData)) + .andDo(print()).andExpect(status().isOk()) + .andExpect(jsonPath("$.code").value(ErrorCode.ERR_OK.getHttpCode())) + .andReturn() + .getResponse() + .getContentAsString(); + + AddNodeRsp retStatus = objectMapper.readValue(verifyResp(ret), AddNodeRsp.class); + List r = retStatus.getItems(); + for (AddNodeRetData v : r + ) { + Assert.assertNotNull(v); + Assert.assertNotNull(v.getIpAddr()); + Assert.assertNotNull(v.getDevId()); + Assert.assertNotNull(v.getMessage()); + Assert.assertNotNull(v.getStatus()); + + if (v.getStatus() == 0) { + Assert.assertEquals(Long.valueOf(v.getStatus()), Long.valueOf(ErrorCode.ERR_OK.getCode())); + } else if (v.getStatus() == 20) { + Assert.assertEquals(Long.valueOf(v.getStatus()), Long.valueOf(ErrorCode.ERR_DEVICEEXISTS.getCode())); + } + } + } + + /** + * A 2 items json exception test. + * + * @throws Exception the exception + */ + @Test + public void a2_itemsJsonExceptionTest() throws Exception { + String reqData = "{\"ver\":2,\"cryptoType\":0,\"timeStamp\":1587628826908,\"msgContent\":\"\"}"; + + String ret = mockMvc.perform(MockMvcRequestBuilders + .put("/manager/device") + .contentType(MediaType.APPLICATION_JSON) + .header("Authorization", "Bearer " + getLogToken()) + .content(reqData)) + .andDo(print()).andExpect(status().isOk()) + .andExpect(jsonPath("$.code").value(ErrorCode.ERR_PARAMEXCEPTION.getHttpCode())) + .andReturn() + .getResponse() + .getContentAsString(); + + AddNodeRetData rspInfo = objectMapper.readValue(verifyResp(ret), AddNodeRetData.class); + + Assert.assertNotNull(rspInfo.getMessage()); + Assert.assertNotNull(rspInfo.getStatus()); + + Assert.assertEquals(Long.valueOf(rspInfo.getStatus()), Long.valueOf(ErrorCode.ERR_PARAMEXCEPTION.getCode())); + } + + /** + * A 3 items null exception test. + * + * @throws Exception the exception + */ + @Test + public void a3_itemsNullExceptionTest() throws Exception { + String reqData = "{\"ver\":2,\"cryptoType\":0,\"timeStamp\":1587628826908,\"msgContent\":\"null\"}"; + + String ret = mockMvc.perform(MockMvcRequestBuilders + .put("/manager/device") + .contentType(MediaType.APPLICATION_JSON) + .header("Authorization", "Bearer " + getLogToken()) + .content(reqData)) + .andDo(print()).andExpect(status().isOk()) + .andExpect(jsonPath("$.code").value(ErrorCode.ERR_PARAMEXCEPTION.getHttpCode())) + .andReturn() + .getResponse() + .getContentAsString(); + + AddNodeRetData rspInfo = objectMapper.readValue(verifyResp(ret), AddNodeRetData.class); + + Assert.assertNotNull(rspInfo.getMessage()); + Assert.assertNotNull(rspInfo.getStatus()); + + Assert.assertEquals(Long.valueOf(rspInfo.getStatus()), Long.valueOf(ErrorCode.ERR_PARAMEXCEPTION.getCode())); + } + + /** + * A 4 type json exception test. + * + * @throws Exception the exception + */ + @Test + public void a4_typeJsonExceptionTest() throws Exception { + String reqData = "{\"ver\":2,\"cryptoType\":0,\"timeStamp\":1587628826908," + + "\"msgContent\":\"{\\\"items\\\":[{\\\"areaCode\\\":0,\\\"ipAddr\\\":\\\"10.88.77.15\\\"," + + "\\\"manufacturer\\\":\\\"DPTech\\\",\\\"model\\\":\\\"UMC\\\"," + + "\\\"name\\\":\\\"中移杭研实验室清洗设备\\\",\\\"readme\\\":\\\"实验室测试设备\\\"," + + "\\\"type\\\":,\\\"version\\\":\\\"5.7.13\\\"}]}\"}"; + + String ret = mockMvc.perform(MockMvcRequestBuilders + .put("/manager/device") + .contentType(MediaType.APPLICATION_JSON) + .header("Authorization", "Bearer " + getLogToken()) + .content(reqData)) + .andDo(print()).andExpect(status().isOk()) + .andExpect(jsonPath("$.code").value(ErrorCode.ERR_PARAMEXCEPTION.getHttpCode())) + .andReturn() + .getResponse() + .getContentAsString(); + + AddNodeRetData rspInfo = objectMapper.readValue(verifyResp(ret), AddNodeRetData.class); + + Assert.assertNotNull(rspInfo.getMessage()); + Assert.assertNotNull(rspInfo.getStatus()); + + Assert.assertEquals(Long.valueOf(rspInfo.getStatus()), Long.valueOf(ErrorCode.ERR_PARAMEXCEPTION.getCode())); + } + + /** + * B 1 delete Normal DeviceNodeManager test. + * + * @throws Exception the exception + */ + @Test + public void b1_deleteNormalDeviceNodeManager() throws Exception { + String reqData = "{\"ver\":2,\"cryptoType\":0,\"timeStamp\":1587604308040," + + "\"msgContent\":\"{\\\"id\\\":[\\\"482\\\"]}\"}"; + + String ret = mockMvc.perform(MockMvcRequestBuilders + .delete("/manager/device") + .contentType(MediaType.APPLICATION_JSON) + .header("Authorization", "Bearer " + getLogToken()) + .content(reqData)) + .andDo(print()).andExpect(status().isOk()) + .andExpect(jsonPath("$.code").value(ErrorCode.ERR_OK.getHttpCode())) + .andReturn() + .getResponse() + .getContentAsString(); + + + List delNodeList = objectMapper.readValue(verifyResp(ret), new TypeReference>() { + }); + for (IDReturnStatus rspInfo : delNodeList) { + Assert.assertNotNull(rspInfo); + Assert.assertNotNull(rspInfo.getId()); + Assert.assertNotNull(rspInfo.getMessage()); + Assert.assertNotNull(rspInfo.getStatus()); + + if (rspInfo.getStatus() == 0) { + Assert.assertEquals(Long.valueOf(rspInfo.getStatus()), Long.valueOf(ErrorCode.ERR_OK.getCode())); + } else if (rspInfo.getStatus() == 19) { + Assert.assertEquals(Long.valueOf(rspInfo.getStatus()), Long.valueOf(ErrorCode.ERR_NOSUCHDEVICE.getCode())); + } + } + + } +} \ No newline at end of file