From 0667a3d889ff1fa5fe94cefbbfdac95e26409d7e Mon Sep 17 00:00:00 2001 From: chenlinghy <chenlinghy@cmhi.chinamobile.com> Date: Fri, 7 Aug 2020 10:32:11 +0800 Subject: [PATCH] =?UTF-8?q?OCT=20REM:=201.=20=E6=B7=BB=E5=8A=A0=E8=83=BD?= =?UTF-8?q?=E5=8A=9B=E8=8A=82=E7=82=B9=E7=AE=A1=E7=90=86=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?(=E6=B7=BB=E5=8A=A0=E8=8A=82=E7=82=B9=E3=80=81=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E8=8A=82=E7=82=B9=E3=80=81=E4=BF=AE=E6=94=B9=E8=8A=82?= =?UTF-8?q?=E7=82=B9)=E7=9A=84=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DisposeDeviceManagerControllerTest.java | 355 ++++++++++++++++++ 1 file changed, 355 insertions(+) create mode 100644 src/test/java/com/dispose/test/controller/DisposeDeviceManagerControllerTest.java diff --git a/src/test/java/com/dispose/test/controller/DisposeDeviceManagerControllerTest.java b/src/test/java/com/dispose/test/controller/DisposeDeviceManagerControllerTest.java new file mode 100644 index 00000000..a71d7ce3 --- /dev/null +++ b/src/test/java/com/dispose/test/controller/DisposeDeviceManagerControllerTest.java @@ -0,0 +1,355 @@ +package com.dispose.test.controller; + +import com.dispose.common.*; +import com.dispose.mapper.DisposeDeviceMapper; +import com.dispose.pojo.dto.protocol.base.IdArraysReq; +import com.dispose.pojo.dto.protocol.base.ProtocolReqDTO; +import com.dispose.pojo.dto.protocol.base.ProtocolRespDTO; +import com.dispose.pojo.dto.protocol.device.manager.*; +import com.dispose.pojo.entity.DisposeDevice; +import com.dispose.pojo.po.MulReturnType; +import com.dispose.test.Global.InitTestEnvironment; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import jodd.net.HttpStatus; +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 java.util.stream.Collectors; + +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; + +/** + * The type Auth controller test. + * + * @author <huangxin@cmhi.chinamoblie.com> + */ +@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 DisposeDeviceManagerControllerTest extends InitTestEnvironment { + /** + * The Mock mvc. + */ + @Resource + private MockMvc mockMvc; + /** + * The Object mapper. + */ + @Resource + private ObjectMapper objectMapper; + /** + * The dispose device mapper. + */ + @Resource + private DisposeDeviceMapper disposeDeviceMapper; + + /** + * A 1 add dispose device. + * + * @throws Exception the exception + */ + @Test + public void a1_addDisposeDevice() throws Exception { + AddDeviceReq addReq = AddDeviceReq.builder() + .items(new ArrayList<>()) + .build(); + + List<AddCapacityInfo> newCapList = new ArrayList<>(); + + newCapList.add(AddCapacityInfo.builder() + .capacityType(DisposeCapacityType.CLEANUP.getValue()) + .objectType(DisposeObjectType.IP.getValue()) + .ipType(IpAddrType.IPV4_IPV6.getValue()) + .protectIp("") + .build()); + + newCapList.add(AddCapacityInfo.builder() + .capacityType(DisposeCapacityType.BLOCKING.getValue()) + .objectType(DisposeObjectType.URL.getValue()) + .ipType(IpAddrType.IPV4_IPV6.getValue()) + .protectIp("") + .build()); + + addReq.getItems().add(AddDeviceInfo.builder() + .ipAddr("10.88.77.15") + .ipPort("") + .deviceType(DisposeDeviceType.DPTECH_UMC.getValue()) + .areaCode(0) + .deviceName("中移杭研实验室迪普清洗设备") + .manufacturer("DPTech") + .model("UMC") + .version("5.7.13") + .userName("admin") + .password("UMCAdministrator") + .urlPath("UMC/service/AbnormalFlowCleaningService") + .urlType(HttpType.HTTP.getValue()) + .readme("实验室测试设备") + .capacity(newCapList) + .build()); + + ProtocolReqDTO<AddDeviceReq> reqInfo = new ProtocolReqDTO<>(); + + reqInfo.setVer(ConstValue.Protocol.VERSION); + reqInfo.setCryptoType(ProtoCryptoType.CRYPTO_NONE.getCode()); + reqInfo.setTimeStamp(System.currentTimeMillis()); + reqInfo.setMsgContent(addReq); + + List<DisposeDevice> decsBef = disposeDeviceMapper.selectAll(); + + String ret = mockMvc.perform(MockMvcRequestBuilders + .put("/manager/device") + .contentType(MediaType.APPLICATION_JSON) + .header("Authorization", ConstValue.STRING_HTTP_AUTH_HEAD + getLoginToken()) + .content(objectMapper.writeValueAsString(reqInfo))) + .andDo(print()).andExpect(status().isOk()) + .andExpect(jsonPath("$.code").value(HttpStatus.ok().status())) + .andReturn() + .getResponse() + .getContentAsString(); + + ProtocolRespDTO<AddDeviceRsp> rspInfo = objectMapper.readValue(ret, + new TypeReference<ProtocolRespDTO<AddDeviceRsp>>() { + }); + + verifyRespProtocol(rspInfo); + + log.debug(objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(rspInfo)); + + List<DisposeDevice> decsAfter = disposeDeviceMapper.selectAll(); + + for (AddDeviceRet d : rspInfo.getMsgContent().getItems() + ) { + //before: no device information after: device information exists + boolean before = false; + if (decsBef != null && decsBef.size() > 0) { + for (DisposeDevice v : decsBef) { + if (v.getIpAddr().equals(d.getIpAddr()) && v.getIpPort().equals(d.getIpPort())) { + before = true; + break; + } + } + } + + boolean after = false; + if (decsAfter != null && decsAfter.size() > 0) { + for (DisposeDevice v : decsAfter) { + if (v.getIpAddr().equals(d.getIpAddr()) && v.getIpPort().equals(d.getIpPort())) { + after = true; + break; + } + } + } + + Assert.assertNotNull(d.getIpAddr()); + Assert.assertNotNull(d.getIpPort()); + Assert.assertNotNull(d.getStatus()); + Assert.assertNotNull(d.getMessage()); + + if ((!before) && after) { + Assert.assertEquals(Long.valueOf(d.getStatus()), Long.valueOf(ErrorCode.ERR_OK.getCode())); + } else { + Assert.assertNotEquals(Long.valueOf(d.getStatus()), Long.valueOf(ErrorCode.ERR_OK.getCode())); + } + } + } + + /** + * B 1 remove dispose device. + * + * @throws Exception the exception + */ + @Test + public void b1_removeDisposeDevice() throws Exception { + IdArraysReq reqData = IdArraysReq.builder() + .id(new String[]{"1", "2"}) + .build(); + + ProtocolReqDTO<IdArraysReq> reqInfo = new ProtocolReqDTO<>(); + + reqInfo.setVer(ConstValue.Protocol.VERSION); + reqInfo.setCryptoType(ProtoCryptoType.CRYPTO_NONE.getCode()); + reqInfo.setTimeStamp(System.currentTimeMillis()); + reqInfo.setMsgContent(reqData); + + List<DisposeDevice> decsBef = disposeDeviceMapper.selectAll(); + + String ret = mockMvc.perform(MockMvcRequestBuilders + .delete("/manager/device") + .contentType(MediaType.APPLICATION_JSON) + .header("Authorization", ConstValue.STRING_HTTP_AUTH_HEAD + getLoginToken()) + .content(objectMapper.writeValueAsString(reqInfo))) + .andDo(print()).andExpect(status().isOk()) + .andExpect(jsonPath("$.code").value(HttpStatus.ok().status())) + .andReturn() + .getResponse() + .getContentAsString(); + + ProtocolRespDTO<List<DeviceInfoRsp>> rspInfo = objectMapper.readValue(ret, + new TypeReference<ProtocolRespDTO<List<DeviceInfoRsp>>>() { + }); + + verifyRespProtocol(rspInfo); + + log.debug(objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(rspInfo)); + + List<DisposeDevice> decsAfter = disposeDeviceMapper.selectAll(); + + for (DeviceInfoRsp d : rspInfo.getMsgContent() + ) { + //before: device information exists after: no device information + boolean before = false; + if (decsBef != null && decsBef.size() > 0) { + for (DisposeDevice v : decsBef) { + if (v.getId().equals(Long.valueOf(d.getId()))) { + before = true; + break; + } + } + } + + boolean after = false; + if (decsAfter != null && decsAfter.size() > 0) { + for (DisposeDevice v : decsAfter) { + if (v.getId().equals(Long.valueOf(d.getId())) && (v.getStatus() == ObjectStatus.DELETED)) { + after = true; + break; + } + } + } + + Assert.assertNotNull(d.getId()); + Assert.assertNotNull(d.getStatus()); + Assert.assertNotNull(d.getMessage()); + + if (before && after) { + Assert.assertEquals(Long.valueOf(d.getStatus()), Long.valueOf(ErrorCode.ERR_OK.getCode())); + Assert.assertEquals(d.getDevStatus(), ObjectStatus.DELETED); + } else { + Assert.assertNotEquals(Long.valueOf(d.getStatus()), Long.valueOf(ErrorCode.ERR_OK.getCode())); + Assert.assertNotEquals(d.getDevStatus(), ObjectStatus.DELETED); + } + } + } + + /** + * C 1 upgrade dispose device. + * + * @throws Exception the exception + */ + @Test + public void c1_upgradeDisposeDevice() throws Exception { + AddDeviceReq addReq = AddDeviceReq.builder() + .items(new ArrayList<>()) + .build(); + + List<AddCapacityInfo> newCapList = new ArrayList<>(); + + List<MulReturnType<Long, String>> beforeRed = new ArrayList<>(); + + disposeDeviceMapper.selectAll().forEach(v -> { + if (v.getDevCapacity().size() == 0) { + newCapList.add(AddCapacityInfo.builder() + .capacityType(DisposeCapacityType.CLEANUP.getValue()) + .objectType(DisposeObjectType.IP.getValue()) + .ipType(IpAddrType.IPV4_IPV6.getValue()) + .protectIp("") + .build()); + } + + beforeRed.add(new MulReturnType<>(v.getId(), v.getVersion())); + + if (v.getVersion().equals("B5.2.27.7")) { + v.setVersion("5.7.13"); + } else { + v.setVersion("B5.2.27.7"); + } + + addReq.getItems().add(AddDeviceInfo.builder() + .ipAddr(v.getIpAddr()) + .ipPort(v.getIpPort()) + .deviceType(v.getDeviceType().getValue()) + .areaCode(v.getAreaCode()) + .deviceName(v.getDeviceName()) + .manufacturer(v.getManufacturer()) + .model(v.getModel()) + .version(v.getVersion()) + .userName(v.getUserName()) + .password(v.getPassword()) + .urlPath(v.getUrlPath()) + .urlType(v.getUrlType().getValue()) + .readme(v.getReadme()) + .capacity(newCapList) + .build()); + }); + + ProtocolReqDTO<AddDeviceReq> reqInfo = new ProtocolReqDTO<>(); + + reqInfo.setVer(ConstValue.Protocol.VERSION); + reqInfo.setCryptoType(ProtoCryptoType.CRYPTO_NONE.getCode()); + reqInfo.setTimeStamp(System.currentTimeMillis()); + reqInfo.setMsgContent(addReq); + + String ret = mockMvc.perform(MockMvcRequestBuilders + .post("/manager/upgrade") + .contentType(MediaType.APPLICATION_JSON) + .header("Authorization", ConstValue.STRING_HTTP_AUTH_HEAD + getLoginToken()) + .content(objectMapper.writeValueAsString(reqInfo))) + .andDo(print()).andExpect(status().isOk()) + .andExpect(jsonPath("$.code").value(HttpStatus.ok().status())) + .andReturn() + .getResponse() + .getContentAsString(); + + ProtocolRespDTO<List<DeviceInfoRsp>> rspInfo = objectMapper.readValue(ret, + new TypeReference<ProtocolRespDTO<List<DeviceInfoRsp>>>() { + }); + + verifyRespProtocol(rspInfo); + + log.debug(objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(rspInfo)); + + for (DeviceInfoRsp deviceInfoRsp : rspInfo.getMsgContent() + ) { + + List<MulReturnType<Long, String>> beforeDev = beforeRed.stream() + .filter(k -> k.getFirstParam().equals(Long.valueOf(deviceInfoRsp.getId()))) + .collect(Collectors.toList()); + + DisposeDevice afterDev = disposeDeviceMapper.getDeviceById(Long.valueOf(deviceInfoRsp.getId())); + log.debug(objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(afterDev)); + + if (deviceInfoRsp.getStatus() == ErrorCode.ERR_OK.getCode()) { + log.info("+++++++++++++++++++++before{}", beforeDev.get(0).getSecondParam()); + log.info("+++++++++++++++++++++after{}", afterDev.getVersion()); + + Assert.assertNotNull(deviceInfoRsp); + Assert.assertNotNull(deviceInfoRsp.getId()); + Assert.assertNotNull(deviceInfoRsp.getMessage()); + Assert.assertNotEquals(afterDev.getVersion(), beforeDev.get(0).getSecondParam()); + } else { + Assert.assertEquals(afterDev.getVersion(), beforeDev.get(0).getSecondParam()); + } + } + } +}