From d9db98849afdd8b976a5ff28204e7fe95a9c267f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Thu, 23 Jul 2020 23:32:42 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=B5=8B=E8=AF=95=E5=9F=BA?= =?UTF-8?q?=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/cn/celess/blog/BaseTest.java | 138 +++++++++++++----- .../controller/ArticleControllerTest.java | 9 +- 2 files changed, 103 insertions(+), 44 deletions(-) diff --git a/src/test/java/cn/celess/blog/BaseTest.java b/src/test/java/cn/celess/blog/BaseTest.java index 6047ffe..50bcad4 100644 --- a/src/test/java/cn/celess/blog/BaseTest.java +++ b/src/test/java/cn/celess/blog/BaseTest.java @@ -1,8 +1,11 @@ package cn.celess.blog; +import cn.celess.blog.entity.Response; +import cn.celess.blog.entity.model.UserModel; import cn.celess.blog.entity.request.LoginReq; -import net.sf.json.JSONObject; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -27,6 +30,7 @@ import java.util.UUID; import static cn.celess.blog.enmu.ResponseEnum.SUCCESS; import static org.junit.Assert.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** @@ -45,6 +49,10 @@ public class BaseTest { protected final static String Result = "result"; private static String userToken = null; private static String adminToken = null; + /** + * jackson 序列化/反序列化Json + */ + protected final ObjectMapper mapper = new ObjectMapper(); @Autowired private WebApplicationContext wac; @@ -62,73 +70,125 @@ public class BaseTest { System.out.println("==========> 测试结束 <========="); } - + /** + *  admin 权限用户登录 + * + * @return token + */ protected String adminLogin() { if (adminToken != null) return adminToken; - try { - LoginReq req = new LoginReq(); - req.setEmail("a@celess.cn"); - req.setPassword("123456789"); - req.setIsRememberMe(false); - JSONObject loginReq = JSONObject.fromObject(req); - String str = mockMvc.perform(MockMvcRequestBuilders.post("/login").content(loginReq.toString()).contentType("application/json")) - // .andDo(MockMvcResultHandlers.print()) - .andReturn().getResponse().getContentAsString(); - adminToken = JSONObject.fromObject(str).getJSONObject(Result).getString("token"); - assertNotNull(adminToken); - return adminToken; - } catch (Exception e) { - e.printStackTrace(); - return null; - } + LoginReq req = new LoginReq(); + req.setEmail("a@celess.cn"); + req.setPassword("123456789"); + req.setIsRememberMe(false); + adminToken = login(req); + assertNotNull(adminToken); + return adminToken; } + /** + * user 权限用户登录 + * + * @return token + */ protected String userLogin() { if (userToken != null) return userToken; + LoginReq req = new LoginReq(); + req.setEmail("zh56462271@qq.com"); + req.setPassword("123456789"); + req.setIsRememberMe(false); + userToken = login(req); + assertNotNull(userToken); + return userToken; + } + + /** + * 登录逻辑 + * + * @param req 用户信息 + * @return token | null + */ + private String login(LoginReq req) { + String str = null; try { - LoginReq req = new LoginReq(); - req.setEmail("zh56462271@qq.com"); - req.setPassword("123456789"); - req.setIsRememberMe(false); - JSONObject loginReq = JSONObject.fromObject(req); - String str = mockMvc.perform(MockMvcRequestBuilders.post("/login").content(loginReq.toString()).contentType("application/json")) - // .andDo(MockMvcResultHandlers.print()) + str = getMockData(post("/login"), null, req) .andReturn().getResponse().getContentAsString(); - userToken = JSONObject.fromObject(str).getJSONObject(Result).getString("token"); - assertNotNull(userToken); - return userToken; + Response response = mapper.readValue(str, new TypeReference>() { + }); + assertEquals(SUCCESS.getCode(), response.getCode()); + String token = response.getResult().getToken(); + assertNotNull(token); + return token; } catch (Exception e) { e.printStackTrace(); - return null; } + return null; } @Test public void test() { - + // 测试登录 + assertNotNull(userLogin()); + assertNotNull(adminLogin()); + try { + // 测试getMockData方法 + assertNotNull(getMockData(get("/headerInfo"))); + } catch (Exception e) { + e.printStackTrace(); + } } + /** + * 产生指定长度的随机字符 + * + * @param len + * @return + */ protected String randomStr(int len) { return UUID.randomUUID().toString().replaceAll("-", "").substring(0, len); } - protected ResultActions getMockData(String url) throws Exception { - return getMockData(url, null, null); + /** + * 抽离的mock请求方法 + * + * @param builder MockHttpServletRequestBuilder :get(...) post(...) .... + * @return 返回 ResultActions + * @throws Exception exc + */ + protected ResultActions getMockData(MockHttpServletRequestBuilder builder) throws Exception { + return getMockData(builder, null, null); } - protected ResultActions getMockData(String url, String token) throws Exception { - return getMockData(url, token, null); + /** + * 抽离的mock请求方法 重载 + * + * @param builder .. + * @param token 用户登录的token + * @return .. + * @throws Exception .. + */ + protected ResultActions getMockData(MockHttpServletRequestBuilder builder, String token) throws Exception { + return getMockData(builder, token, null); } - protected ResultActions getMockData(String url, String token, Object content) throws Exception { - MockHttpServletRequestBuilder mockHttpServletRequestBuilder = get(url); + /** + * 抽离的mock请求方法 重载 + * + * @param builder .. + * @param token .. + * @param content http中发送的APPLICATION_JSON的json数据 + * @return .. + * @throws Exception .. + */ + protected ResultActions getMockData(MockHttpServletRequestBuilder builder, String token, Object content) throws Exception { + // MockHttpServletRequestBuilder mockHttpServletRequestBuilder = get(url); if (token != null) { - mockHttpServletRequestBuilder.header("Authorization", token); + builder.header("Authorization", token); } if (content != null) { - mockHttpServletRequestBuilder.content(JSONObject.fromObject(content).toString()).contentType(MediaType.APPLICATION_JSON); + builder.content(mapper.writeValueAsString(content)).contentType(MediaType.APPLICATION_JSON); } - return mockMvc.perform(mockHttpServletRequestBuilder).andExpect(status().isOk()); + return mockMvc.perform(builder).andExpect(status().isOk()); } } diff --git a/src/test/java/cn/celess/blog/controller/ArticleControllerTest.java b/src/test/java/cn/celess/blog/controller/ArticleControllerTest.java index 9c747b5..fe0a7cb 100644 --- a/src/test/java/cn/celess/blog/controller/ArticleControllerTest.java +++ b/src/test/java/cn/celess/blog/controller/ArticleControllerTest.java @@ -262,20 +262,19 @@ public class ArticleControllerTest extends BaseTest { @Test public void adminArticles() { - ObjectMapper mapper = new ObjectMapper(); try { - getMockData("/admin/articles?page=1&count=10").andExpect(result -> + getMockData(get("/admin/articles?page=1&count=10")).andExpect(result -> assertEquals(HAVE_NOT_LOG_IN.getCode(), mapper.readValue(result.getResponse().getContentAsString(), Response.class).getCode()) ); // User权限登陆 - getMockData("/admin/articles?page=1&count=10", userLogin()).andDo(result -> + getMockData(get("/admin/articles?page=1&count=10"), userLogin()).andDo(result -> assertEquals(PERMISSION_ERROR.getCode(), mapper.readValue(result.getResponse().getContentAsString(), Response.class).getCode()) ); for (int i = 0; i < 2; i++) { // admin权限登陆 int finalI = i; - getMockData("/admin/articles?page=1&count=10&deleted=" + (i == 1), adminLogin()).andDo(result -> { + getMockData(get("/admin/articles?page=1&count=10&deleted=" + (i == 1)), adminLogin()).andDo(result -> { Response> response = mapper.readValue(result.getResponse().getContentAsString(), new TypeReference>>() { }); assertEquals(SUCCESS.getCode(), response.getCode()); @@ -295,7 +294,7 @@ public class ArticleControllerTest extends BaseTest { assertNotNull(a.getReadingNumber()); assertNotNull(a.getLikeCount()); assertNotNull(a.getDislikeCount()); - assertEquals((finalI == 1),a.isDeleted()); + assertEquals((finalI == 1), a.isDeleted()); assertNull(a.getMdContent()); } });