REM:
1. 增加Auth控制层单元测试
2. 增加Auth数据库单元测试
3. 增加数据库SQL XML配置文件
This commit is contained in:
huangxin 2020-04-16 15:51:48 +08:00
parent 9d6bc45bb6
commit a48e6dc93c
6 changed files with 212 additions and 3 deletions
src
main
java/com/dispose
resources/mappers
test/java/com/dispose

View File

@ -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

View File

@ -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;

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dispose.mapper.UserAccountMapper">
<!-- mapper xml文件中只编写复杂逻辑的SQL SQL单独拿出来写与代码解耦SQL的熟练编写是每个研发必备的技能 -->
<select id="getUserByName" resultType="com.dispose.pojo.entity.UserAccount">
SELECT * FROM user_account WHERE username = #{username}
</select>
<update id="lockUserAccount">
UPDATE
user_account
SET
status = 1,
lockTime = CURRENT_TIMESTAMP
WHERE
username = #{username, jdbcType=VARCHAR}
</update>
<update id="unlockUserAccount">
UPDATE
user_account
SET
status = 0,
lockTime = 0
WHERE
username = #{username, jdbcType=VARCHAR}
</update>
<update id="refreshLoginTime">
UPDATE
user_account
SET
lastLoginTime = CURRENT_TIMESTAMP
WHERE
username = #{username, jdbcType=VARCHAR}
</update>
</mapper>

View File

@ -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 {
}

View File

@ -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();
}
}

View File

@ -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));
}
}