From a48e6dc93c3f624ef5c506fbbf3c1b2a1010bd4b Mon Sep 17 00:00:00 2001 From: huangxin Date: Thu, 16 Apr 2020 15:51:48 +0800 Subject: [PATCH] =?UTF-8?q?OCT=20REM:=201.=20=E5=A2=9E=E5=8A=A0Auth?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E5=B1=82=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=202.=20=E5=A2=9E=E5=8A=A0Auth=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95=203.=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93SQL=20XML=E9=85=8D=E7=BD=AE=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dispose/controller/AuthController.java | 2 +- .../manager/UserAccountCacheManager.java | 2 - src/main/resources/mappers/UserAccount.xml | 34 +++++++ .../TestSuit/AllDisposePlatformTest.java | 17 ++++ .../controller/AuthControllerTest.java | 95 +++++++++++++++++++ .../dispose/mapper/UserAccountMapperTest.java | 65 +++++++++++++ 6 files changed, 212 insertions(+), 3 deletions(-) create mode 100644 src/main/resources/mappers/UserAccount.xml create mode 100644 src/test/java/com/dispose/TestSuit/AllDisposePlatformTest.java create mode 100644 src/test/java/com/dispose/controller/AuthControllerTest.java create mode 100644 src/test/java/com/dispose/mapper/UserAccountMapperTest.java diff --git a/src/main/java/com/dispose/controller/AuthController.java b/src/main/java/com/dispose/controller/AuthController.java index 2f7fbb07..86205a94 100644 --- a/src/main/java/com/dispose/controller/AuthController.java +++ b/src/main/java/com/dispose/controller/AuthController.java @@ -24,7 +24,7 @@ import javax.annotation.Resource; import java.security.NoSuchAlgorithmException; @Controller -@RequestMapping(value = "/handle") +@RequestMapping(value = "/auth") @Slf4j @Api(value = "抗DDoS处置平台认证接口", tags = "抗DDoS处置平台认证接口") @Component diff --git a/src/main/java/com/dispose/manager/UserAccountCacheManager.java b/src/main/java/com/dispose/manager/UserAccountCacheManager.java index ec954166..287b97b1 100644 --- a/src/main/java/com/dispose/manager/UserAccountCacheManager.java +++ b/src/main/java/com/dispose/manager/UserAccountCacheManager.java @@ -1,8 +1,6 @@ package com.dispose.manager; import com.dispose.common.ErrorCode; -import com.dispose.pojo.entity.UserAccount; -import com.dispose.pojo.po.UserAccountCache; import com.fasterxml.jackson.core.JsonProcessingException; import java.security.NoSuchAlgorithmException; diff --git a/src/main/resources/mappers/UserAccount.xml b/src/main/resources/mappers/UserAccount.xml new file mode 100644 index 00000000..49d1274f --- /dev/null +++ b/src/main/resources/mappers/UserAccount.xml @@ -0,0 +1,34 @@ + + + + + + + UPDATE + user_account + SET + status = 1, + lockTime = CURRENT_TIMESTAMP + WHERE + username = #{username, jdbcType=VARCHAR} + + + UPDATE + user_account + SET + status = 0, + lockTime = 0 + WHERE + username = #{username, jdbcType=VARCHAR} + + + UPDATE + user_account + SET + lastLoginTime = CURRENT_TIMESTAMP + WHERE + username = #{username, jdbcType=VARCHAR} + + \ No newline at end of file diff --git a/src/test/java/com/dispose/TestSuit/AllDisposePlatformTest.java b/src/test/java/com/dispose/TestSuit/AllDisposePlatformTest.java new file mode 100644 index 00000000..b6b9e338 --- /dev/null +++ b/src/test/java/com/dispose/TestSuit/AllDisposePlatformTest.java @@ -0,0 +1,17 @@ +package com.dispose.TestSuit; + + +import com.dispose.controller.AuthControllerTest; +import com.dispose.dptech.DPTechInterfaceTestCase; +import com.dispose.mapper.UserAccountMapperTest; +import org.junit.runner.RunWith; +import org.junit.runners.Suite; + +@RunWith(Suite.class) +@Suite.SuiteClasses({ + DPTechInterfaceTestCase.class, + UserAccountMapperTest.class, + AuthControllerTest.class +}) +public class AllDisposePlatformTest { +} diff --git a/src/test/java/com/dispose/controller/AuthControllerTest.java b/src/test/java/com/dispose/controller/AuthControllerTest.java new file mode 100644 index 00000000..ea89b1da --- /dev/null +++ b/src/test/java/com/dispose/controller/AuthControllerTest.java @@ -0,0 +1,95 @@ +package com.dispose.controller; + +import com.dispose.common.ConstValue; +import com.dispose.pojo.dto.ProtocolReqDTO; +import com.dispose.pojo.dto.ProtocolRespDTO; +import com.dispose.pojo.vo.auth.LoginReq; +import com.dispose.pojo.vo.auth.LoginRsp; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.slf4j.Slf4j; +import org.junit.Test; +import org.junit.runner.RunWith; +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 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) +@Slf4j +public class AuthControllerTest { + @Resource + private MockMvc mockMvc; + + @Resource + private ObjectMapper objectMapper; + + static private String logToken = ""; + + @Test + public void login1() throws Exception { + LoginReq logReq = LoginReq.builder() + .userName("admin") + .password("c3855e6b6bb120450f160ba91134522868f89d36062f2061ebeefd80817e1d58") + .build(); + + ProtocolReqDTO reqInfo = new ProtocolReqDTO(); + reqInfo.setVer(ConstValue.Protocol.VERSION); + reqInfo.setCryptoType(ConstValue.Protocol.CRYPTO_NONE); + reqInfo.setTimeStamp(System.currentTimeMillis()); + reqInfo.setMsgContent(objectMapper.writeValueAsString(logReq)); + + String ret = mockMvc.perform(MockMvcRequestBuilders + .post("/auth/login") + .contentType(MediaType.APPLICATION_JSON) + .content(objectMapper.writeValueAsString(reqInfo))) + .andDo(print()).andExpect(status().isOk()) + .andExpect(jsonPath("$.code").value(200)) + .andReturn() + .getResponse() + .getContentAsString(); + + ProtocolRespDTO rspInfo = objectMapper.readValue(ret, ProtocolRespDTO.class); + LoginRsp logRsp = objectMapper.readValue(rspInfo.getMsgContent(), LoginRsp.class); + + logToken = logRsp.getToken(); + log.info("Login Token:" + logToken); + } + + @Test + public void logout2() throws Exception { + LoginReq logReq = LoginReq.builder() + .userName("admin") + .build(); + + ProtocolReqDTO reqInfo = new ProtocolReqDTO(); + reqInfo.setVer(ConstValue.Protocol.VERSION); + reqInfo.setCryptoType(ConstValue.Protocol.CRYPTO_NONE); + reqInfo.setTimeStamp(System.currentTimeMillis()); + reqInfo.setMsgContent(objectMapper.writeValueAsString(logReq)); + + login1(); + + mockMvc.perform(MockMvcRequestBuilders + .post("/auth/logout") + .contentType(MediaType.APPLICATION_JSON) + .header("Authorization", "Bearer " + logToken) + .content(objectMapper.writeValueAsString(reqInfo))) + .andDo(print()).andExpect(status().isOk()) + .andExpect(jsonPath("$.code").value(200)) + .andReturn() + .getResponse() + .getContentAsString(); + } +} diff --git a/src/test/java/com/dispose/mapper/UserAccountMapperTest.java b/src/test/java/com/dispose/mapper/UserAccountMapperTest.java new file mode 100644 index 00000000..3bc8b6ab --- /dev/null +++ b/src/test/java/com/dispose/mapper/UserAccountMapperTest.java @@ -0,0 +1,65 @@ +package com.dispose.mapper; + +import com.dispose.common.ConstValue; +import com.dispose.pojo.entity.UserAccount; +import com.fasterxml.jackson.core.JsonProcessingException; +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.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; + +@RunWith(SpringRunner.class) +@SpringBootTest +@Slf4j +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class UserAccountMapperTest { + @Autowired + private ObjectMapper objMapper; + + @Resource + private UserAccountMapper userAccountMapper; + + @Test + public void getUserByName() throws JsonProcessingException { + UserAccount user = userAccountMapper.getUserByName("admin"); + + log.info(objMapper.writerWithDefaultPrettyPrinter().writeValueAsString(user)); + + Assert.assertNotNull(user); + } + + @Test + public void lockUser1() throws JsonProcessingException { + userAccountMapper.lockUserAccount("admin"); + + UserAccount user = userAccountMapper.getUserByName("admin"); + Assert.assertEquals(new Long(user.getStatus()), new Long(ConstValue.UserAccountStatus.LOCKED)); + log.info(objMapper.writerWithDefaultPrettyPrinter().writeValueAsString(user)); + } + + @Test + public void unlockUser2() throws JsonProcessingException { + userAccountMapper.unlockUserAccount("admin"); + + UserAccount user = userAccountMapper.getUserByName("admin"); + Assert.assertEquals(new Long(user.getStatus()), new Long(ConstValue.UserAccountStatus.NORMAL)); + log.info(objMapper.writerWithDefaultPrettyPrinter().writeValueAsString(user)); + } + + @Test + public void refreshLoginTime() throws JsonProcessingException { + userAccountMapper.refreshLoginTime("admin"); + + UserAccount user = userAccountMapper.getUserByName("admin"); + Assert.assertNotNull(user); + log.info(objMapper.writerWithDefaultPrettyPrinter().writeValueAsString(user)); + } +}