package com.shirley.aTest.Controller; import java.util.Arrays; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import com.google.gson.Gson; import com.shirley.aTest.entity.AssertResult; import com.shirley.aTest.entity.InterfaceCase; import com.shirley.aTest.entity.Mock; import com.shirley.aTest.entity.Request; import com.shirley.aTest.entity.ResponseContent; import com.shirley.aTest.jsonHelper.BigAutocompleteDataHelper; import com.shirley.aTest.jsonHelper.PageHelper; import com.shirley.aTest.method.DoRequest; import com.shirley.aTest.service.InterfaceCaseService; import com.shirley.aTest.service.MockService; /** * @Description: TODO(接口用例控制类) * @author [email protected] * @date 2019年6月24日 上午11:58:54 */ @Controller public class InterfaceCaseController { @Resource(name = "interfaceCaseService") private InterfaceCaseService interfaceCaseService; @Resource(name = "mockService") private MockService mockService; @RequestMapping(value = "/interfaceCaseList", method = RequestMethod.GET) public String interfaceCaseList() { return "interfaceCaseList"; } @RequestMapping(value = "/addInterfaceCase", method = RequestMethod.GET) public String addInterfaceCase() { return "addInterfaceCase"; } @RequestMapping(value = "/queryInterfaceCase", method = RequestMethod.GET) public String queryInterfaceCase() { return "interfaceCaseDetail"; } @RequestMapping(value = "/testCaseResultDetail", method = RequestMethod.GET) public String testCaseResultDetail() { return "testCaseResultDetail"; } @RequestMapping(value = "/copyInterfaceCase", method = RequestMethod.GET) public String copyInterfaceCase() { return "copyInterfaceCase"; } /** * 查找接口用例集(by 用例id/用例名/接口名/接口api) */ @RequestMapping(value = "/queryInterfaceCases", method = RequestMethod.GET) @ResponseBody public PageHelper<InterfaceCase> queryInterfaceCases(Integer pageNumber, Integer pageSize, Integer id, String name, String interfaceName, String interfaceApi) { List<InterfaceCase> interfaceCases = interfaceCaseService.QueryTestCase((null == pageNumber ? 0 : pageNumber), (null == pageSize ? 0 : pageSize), (null == id ? 0 : id), name, interfaceName, interfaceApi); PageHelper<InterfaceCase> pageHelper = new PageHelper<InterfaceCase>(); // 统计总记录数 pageHelper.setTotal( interfaceCaseService.QueryTestCaseCount((null == id ? 0 : id), name, interfaceName, interfaceApi)); pageHelper.setRows(interfaceCases); return pageHelper; } /** * 输入框查找接口用例集(by 用例名) */ @RequestMapping(value = "/queryInterfaceCasesByName", method = RequestMethod.POST) @ResponseBody public BigAutocompleteDataHelper<InterfaceCase> queryInterfaceCasesByName(String keyword) { List<InterfaceCase> interfaceCases = interfaceCaseService.QueryTestCase(0, 0, 0, keyword, null, null); BigAutocompleteDataHelper<InterfaceCase> jsonHelper = new BigAutocompleteDataHelper<InterfaceCase>(); jsonHelper.setData(interfaceCases); return jsonHelper; } /** * 输入框查找接口用例集(by 用例id) */ @RequestMapping(value = "/queryInterfaceCaseById", method = RequestMethod.POST) @ResponseBody public BigAutocompleteDataHelper<InterfaceCase> queryInterfaceCaseById(String keyword) { if (keyword.matches("[0-9]+") && Integer.parseInt(keyword) > 0) { List<InterfaceCase> interfaceCases = interfaceCaseService.QueryTestCase(0, 0, Integer.parseInt(keyword), null, null, null); BigAutocompleteDataHelper<InterfaceCase> jsonHelper = new BigAutocompleteDataHelper<InterfaceCase>(); jsonHelper.setData(interfaceCases); return jsonHelper; } return null; } /** * 新增接口用例 */ @RequestMapping(value = "/toAddInterfaceCase", method = RequestMethod.POST) @ResponseBody public Boolean toAddInterfaceCase(@RequestParam Map<String, String> interfaceCase) { String interfaceIdStr = interfaceCase.get("interfaceId"); String name = interfaceCase.get("name"); String method = interfaceCase.get("method"); if (null != interfaceIdStr && !"".equals(interfaceIdStr) && null != name && !"".equals(name) && null != method && !"".equals(method)) { try { Map<String, String> headers = new HashMap<String, String>(); Map<String, String> variables = new LinkedHashMap<String, String>(); Gson gson = new Gson(); headers = gson.fromJson(interfaceCase.get("headers"), headers.getClass()); variables = gson.fromJson(interfaceCase.get("variables"), variables.getClass()); Integer interfaceId = Integer.parseInt(interfaceIdStr); String description = interfaceCase.get("description"); String params = interfaceCase.get("param"); String asserts = interfaceCase.get("asserts"); InterfaceCase interfaceCaseObject = new InterfaceCase(); interfaceCaseObject.setName(name); interfaceCaseObject.setInterfaceId(interfaceId); interfaceCaseObject.setDescription(description); interfaceCaseObject.setMethod(method); interfaceCaseObject.setHeaders(headers); interfaceCaseObject.setParams(params); interfaceCaseObject.setAsserts(asserts); interfaceCaseObject.setVariables(variables); return interfaceCaseService.AddTestCase(interfaceCaseObject); } catch (Exception e) { e.printStackTrace(); return false; } } return false; } /** * 删除接口用例 */ @RequestMapping(value = "/toDelInterfaceCase", method = RequestMethod.POST) @ResponseBody public Boolean toDelInterfaceCase(Integer[] ids) { List<Integer> idList = Arrays.asList(ids); return interfaceCaseService.DeleteTestCases(idList); } /** * 查找接口用例详情(by 用例id) */ @RequestMapping(value = "/toQueryInterfaceCase", method = RequestMethod.POST) @ResponseBody public InterfaceCase toQueryInterfaceCase(Integer id) { if (null != id) return interfaceCaseService.QueryTestCaseById(id); return null; } /** * 更新接口用例 */ @RequestMapping(value = "/toUpdateInterfaceCase", method = RequestMethod.POST) @ResponseBody public Boolean toUpdateInterfaceCase(@RequestParam Map<String, String> interfaceCase) { String idStr = interfaceCase.get("id"); String interfaceIdStr = interfaceCase.get("interfaceId"); String name = interfaceCase.get("name"); String method = interfaceCase.get("method"); if (null != idStr && null != interfaceIdStr && null != name && null != method && !idStr.equals("") && !interfaceIdStr.equals("") && !name.equals("") && !method.equals("")) { try { Map<String, String> headers = new HashMap<String, String>(); Map<String, String> variables = new LinkedHashMap<String, String>(); Gson gson = new Gson(); headers = gson.fromJson(interfaceCase.get("headers"), headers.getClass()); variables = gson.fromJson(interfaceCase.get("variables"), variables.getClass()); Integer id = Integer.parseInt(idStr); Integer interfaceId = Integer.parseInt(interfaceIdStr); String description = interfaceCase.get("description"); String params = interfaceCase.get("param"); String asserts = interfaceCase.get("asserts"); InterfaceCase interfaceCaseObject = new InterfaceCase(); interfaceCaseObject.setId(id); interfaceCaseObject.setName(name); interfaceCaseObject.setInterfaceId(interfaceId); interfaceCaseObject.setDescription(description); interfaceCaseObject.setMethod(method); interfaceCaseObject.setHeaders(headers); interfaceCaseObject.setParams(params); interfaceCaseObject.setAsserts(asserts); interfaceCaseObject.setVariables(variables); return interfaceCaseService.UpdateTestCase(interfaceCaseObject); } catch (Exception e) { e.printStackTrace(); return false; } } return false; } /** * 执行接口用例并返回断言结果 */ @RequestMapping(value = "/toRequestInterfaceCase", method = RequestMethod.POST) @ResponseBody public AssertResult toRequestInterfaceCase(Integer interfaceCaseId, Integer mockId) { if (null != interfaceCaseId) { Request request = new Request(); request = interfaceCaseService.QueryRequestByTestCaseId(interfaceCaseId); Map<String, String> bindMap = new HashMap<String, String>(); if (null != mockId) { Mock mock = mockService.QueryMockById(mockId); if (null != mock) { bindMap.putAll(mock.getBindVariableMocks()); } } DoRequest doRequest = new DoRequest(0, request, bindMap); ResponseContent responseContent = new ResponseContent(); responseContent = doRequest.toRequest(); doRequest.toUpdateVariables(responseContent); return doRequest.toAssert(responseContent); } return null; } }