diff --git a/pom.xml b/pom.xml
index fe807cae82da9c275811aedb499601e58f8d94fd..03630246ae5e99cf569440bbf78574d1e2519a78 100644
--- a/pom.xml
+++ b/pom.xml
@@ -48,7 +48,7 @@
org.freemarker
freemarker
- 2.3.19
+ 2.3.23
org.hibernate
@@ -458,7 +458,14 @@
3.6
+
+
+ com.cpjit
+ swagger4j
+ 2.2.1
+
+
org.jsoup
jsoup
diff --git a/src/main/java/yi/master/business/message/action/AutoTestAction.java b/src/main/java/yi/master/business/message/action/AutoTestAction.java
index f9d274270dac63f1ba6db90ab09ff3efa8483ca9..5c3f69fcffca384da577e42a625010641cfc0842 100644
--- a/src/main/java/yi/master/business/message/action/AutoTestAction.java
+++ b/src/main/java/yi/master/business/message/action/AutoTestAction.java
@@ -95,6 +95,11 @@ public class AutoTestAction extends ActionSupport implements ModelDriven{
private static final long serialVersionUID = 1L;
@@ -73,6 +77,12 @@ public class UserAction extends BaseAction{
* @return
* @throws NoSuchAlgorithmException
*/
+ @API(value = "user-toLogin", summary = "用户登录", parameters = {
+ @Param(name = "username", description = "用户名", required = true, type = "string"),
+ @Param(name = "password", description = "密码", required = true, type = "string"),
+ @Param(name = "verifyCode", description = "验证码", required = true,type= "string"),
+ @Param(name = "loginIdentification", description = "登录标识",type= "string")
+ })
public String toLogin() throws NoSuchAlgorithmException {
boolean passwdLogin = false;
if (PracticalUtils.isNormalString(model.getLoginIdentification())) {
diff --git a/src/main/java/yi/master/coretest/message/protocol/HTTPTestClient.java b/src/main/java/yi/master/coretest/message/protocol/HTTPTestClient.java
index c2ade8ca81c308faa44d0abcbe65b4dacc56de69..9a99d6add6c53e5eac087f2686406ec299ca7196 100644
--- a/src/main/java/yi/master/coretest/message/protocol/HTTPTestClient.java
+++ b/src/main/java/yi/master/coretest/message/protocol/HTTPTestClient.java
@@ -262,7 +262,29 @@ public class HTTPTestClient extends TestClient {
if (!requestSuccessFlag) {
returnMap.addMark("超过最大请求重试次数:" + config.getRetryCount() + ", 测试终止。");
}
-
+
+ //处理302状态无返回的问题
+ if (returnInfo != null) {
+ response = (HttpResponse) returnInfo[0];
+ if (response != null && 302 == response.getStatusLine().getStatusCode()) {
+ returnInfo = null;
+ //302状态的时候重新请求一次新的地址
+ Header header = response.getFirstHeader("location");
+
+ returnMap.addMark("检测到状态码为302,使用重定向地址[" + header.getValue() + "]重新请求一次");
+ try {
+ if (HttpMethod.GET.name().equalsIgnoreCase(method)) {
+ returnInfo = doGet(header.getValue(), headers, querys, requestMessage, client);
+ } else {
+ returnInfo = doPost(method, header.getValue(), headers, querys, requestMessage, encType, client);
+ }
+ } catch (Exception e) {
+ returnMap.addMark("使用重定向地址请求失败:");
+ returnMap.addMark(e.getMessage());
+ }
+ }
+ }
+
if (returnInfo != null) {
response = (HttpResponse) returnInfo[0];
useTime = (long) returnInfo[1];
@@ -272,8 +294,8 @@ public class HTTPTestClient extends TestClient {
JSONObject headersObject = new JSONObject();
headersObject.put("RequestHeader", new JSONObject());
headersObject.put("ResponseHeader", new JSONObject());
-
- if (response != null) {
+
+ if (response != null) {
StringBuilder returnMsg = new StringBuilder();
//获取所有头信息
parseHeaders(headersObject.getJSONObject("ResponseHeader"), response.getAllHeaders());
diff --git a/src/main/java/yi/master/util/excel/ExportInterfaceInfo.java b/src/main/java/yi/master/util/excel/ExportInterfaceInfo.java
index b8b6570450b680010f2bdf4fe80d007766d19b35..5a16b8cd897c496b6a5774ec3f8a7265f3f8d426 100644
--- a/src/main/java/yi/master/util/excel/ExportInterfaceInfo.java
+++ b/src/main/java/yi/master/util/excel/ExportInterfaceInfo.java
@@ -1,25 +1,20 @@
package yi.master.util.excel;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.Date;
-import java.util.List;
-
import org.apache.log4j.Logger;
-import org.apache.poi.ss.usermodel.Cell;
-import org.apache.poi.ss.usermodel.CellStyle;
-import org.apache.poi.ss.usermodel.Row;
-import org.apache.poi.ss.usermodel.Sheet;
-import org.apache.poi.ss.usermodel.Workbook;
-
+import org.apache.poi.ss.usermodel.*;
import yi.master.business.message.bean.InterfaceInfo;
import yi.master.business.message.bean.Parameter;
import yi.master.constant.MessageKeys;
import yi.master.constant.SystemConsts;
-import yi.master.util.PracticalUtils;
import yi.master.util.FrameworkUtil;
+import yi.master.util.PracticalUtils;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Date;
+import java.util.List;
/**
* 从数据库导出接口详细文档
@@ -34,7 +29,7 @@ public class ExportInterfaceInfo {
public static String exportDocuments (List infos, int type) throws Exception {
String path = null;
OutputStream outputStream = null;
- String fileName = "接口文档_" + System.currentTimeMillis() + "." + (PoiExcelUtil.XLSX == type ? "xlsx" : "xls");
+ String fileName = "document_" + System.currentTimeMillis() + "." + (PoiExcelUtil.XLSX == type ? "xlsx" : "xls");
try {
//创建excel
Workbook wb = PoiExcelUtil.createWorkBook(type);
diff --git a/src/main/resources/swagger.properties b/src/main/resources/swagger.properties
new file mode 100644
index 0000000000000000000000000000000000000000..8e8b9dee18d8eafd371ef2877158226186395403
--- /dev/null
+++ b/src/main/resources/swagger.properties
@@ -0,0 +1,9 @@
+# see https://github.com/cpjit/swagger
+
+packageToScan=yi.master.business
+apiDescription=Master Yi Api Test
+apiTitle=MasterYiApi
+apiVersion=1.0.0
+teamOfService=www.xuwangcheng.com/yi
+devMode=false
+disabled=true
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
index ed91172c1068fa9586b912fe344d85ae2765ba12..24992f5a14f920a1fcd0573cf20279e05bbd64e6 100644
--- a/src/main/webapp/WEB-INF/web.xml
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -38,6 +38,15 @@
+
+
+ swaggerFilter
+ com.cpjit.swagger4j.SwaggerFilter
+
+
+ swaggerFilter
+ /doc/*
+
DruidWebStatFilter
diff --git a/src/main/webapp/resource/advanced/chooseMessageScene.js b/src/main/webapp/resource/advanced/chooseMessageScene.js
index b988e7e47a2ae06a11ae2667fb0d6b4fee856edc..d9d36da6ba7b80d0358e480c8105a72da69b850c 100644
--- a/src/main/webapp/resource/advanced/chooseMessageScene.js
+++ b/src/main/webapp/resource/advanced/chooseMessageScene.js
@@ -203,7 +203,26 @@ $(function(){
});
/**********************************************************************************************************************/
+var customTestData = false;
+/**
+ * 自定义测试数据
+ */
+function changeTestData () {
+ layer.prompt({
+ formType: 2,
+ value: $('#scene-test-request-message').val(),
+ title: "自定义测试数据",
+ offset: '30px',
+ area: ['500px', '300px'] //自定义文本域宽高
+ }, function(value, index, elem){
+ if (value != $('#scene-test-request-message').val()) {
+ $('#scene-test-request-message').val(value);
+ customTestData = true;
+ }
+ layer.close(index);
+ });
+}
/**
* 场景测试页面渲染
*/
@@ -269,7 +288,7 @@ function sceneTest() {
var index = layer.msg('正在进行测试...', {icon:16, time:9999999, shade:0.35});
- $.post(REQUEST_URL.AUTO_TEST.TEST_SCENE_URL, {systemId:$('#select-system').val(), messageSceneId:messageSceneId, dataId:dataId, requestUrl:requestUrl, requestMessage:requestMessage},function(data) {
+ $.post(REQUEST_URL.AUTO_TEST.TEST_SCENE_URL, {customTestData: customTestData, systemId:$('#select-system').val(), messageSceneId:messageSceneId, dataId:dataId, requestUrl:requestUrl, requestMessage:requestMessage},function(data) {
if (data.returnCode == 0) {
layer.close(index);
renderResultViewPage(data.data, messageSceneId);
@@ -278,4 +297,5 @@ function sceneTest() {
layer.alert(data.msg, {icon:5});
}
});
-}
\ No newline at end of file
+}
+
diff --git a/src/main/webapp/resource/message/messageScene.js b/src/main/webapp/resource/message/messageScene.js
index 3804f98e1c34a336f8e288c961e852d9ed2596d4..107db3079cc45bdc08639e347fbfefb8f1b98117 100644
--- a/src/main/webapp/resource/message/messageScene.js
+++ b/src/main/webapp/resource/message/messageScene.js
@@ -732,7 +732,7 @@ $(function(){
});
/**********************************************************************************************************************/
-
+var customTestData = false;
/**
* 场景测试页面渲染
*/
@@ -770,6 +770,7 @@ function renderSceneTestPage(flag) {
return false;
}
$F.find("#scene-test-request-message").val(data.data[systemId]["requestData"][$(that).val()]["dataJson"]);
+ customTestData = false;
});
$selectSystem.change();
@@ -799,7 +800,7 @@ function sceneTest() {
var index = layer.msg('正在进行测试...', {icon:16, time:9999999, shade:0.35});
- $.post(REQUEST_URL.AUTO_TEST.TEST_SCENE_URL, {messageSceneId:messageSceneId, dataId:dataId, requestUrl:requestUrl, requestMessage:requestMessage, systemId:systemId},function(data) {
+ $.post(REQUEST_URL.AUTO_TEST.TEST_SCENE_URL, {customTestData: customTestData, messageSceneId:messageSceneId, dataId:dataId, requestUrl:requestUrl, requestMessage:requestMessage, systemId:systemId},function(data) {
if (data.returnCode == 0) {
layer.close(index);
renderResultViewPage(data.data, messageSceneId);
@@ -845,4 +846,24 @@ function editSceneConfigVariable (obj, editMode) {
});
return returnContext;
+}
+
+
+/**
+ * 自定义测试数据
+ */
+function changeTestData () {
+ layer.prompt({
+ formType: 2,
+ value: $('#scene-test-request-message').val(),
+ title: "自定义测试数据",
+ offset: '30px',
+ area: ['500px', '300px'] //自定义文本域宽高
+ }, function(value, index, elem){
+ if (value != $('#scene-test-request-message').val()) {
+ $('#scene-test-request-message').val(value);
+ customTestData = true;
+ }
+ layer.close(index);
+ });
}
\ No newline at end of file
diff --git a/src/main/webapp/resource/message/setScene.js b/src/main/webapp/resource/message/setScene.js
index 87653e6b71579ddc82c6f2e49d98e93029d7e062..cd24b074691f174df4ec795806dc21e1b54d009d 100644
--- a/src/main/webapp/resource/message/setScene.js
+++ b/src/main/webapp/resource/message/setScene.js
@@ -368,6 +368,29 @@ $(function(){
});
/****************************************************************/
+
+var customTestData = false;
+
+/**
+ * 自定义测试数据
+ */
+function changeTestData () {
+ layer.prompt({
+ formType: 2,
+ value: $('#scene-test-request-message').val(),
+ title: "自定义测试数据",
+ offset: '30px',
+ area: ['500px', '300px'] //自定义文本域宽高
+ }, function(value, index, elem){
+ if (value != $('#scene-test-request-message').val()) {
+ $('#scene-test-request-message').val(value);
+ customTestData = true;
+ }
+ layer.close(index);
+ });
+}
+
+
function viewRunSettingConfig () {
layer_show(currentSetInfo.setName + "-运行时配置", templates["set-setting-config"](currentSetInfo.config), '800', '640', 1, function() {
resetOptions();
@@ -481,7 +504,7 @@ function sceneTest() {
var systemId = $F.find("#select-system").val();
var index = layer.msg('正在进行测试...', {icon:16, time:9999999, shade:0.35});
- $.post(REQUEST_URL.AUTO_TEST.TEST_SCENE_URL, {messageSceneId:messageSceneId, dataId:dataId, requestUrl:requestUrl, requestMessage:requestMessage, systemId:systemId},function(data) {
+ $.post(REQUEST_URL.AUTO_TEST.TEST_SCENE_URL, {customTestData: customTestData, messageSceneId:messageSceneId, dataId:dataId, requestUrl:requestUrl, requestMessage:requestMessage, systemId:systemId},function(data) {
if (data.returnCode == 0) {
layer.close(index);
renderResultViewPage(data.data, messageSceneId);
diff --git a/src/main/webapp/resource/template/messageScene-test.htm b/src/main/webapp/resource/template/messageScene-test.htm
index e93dc971b3088cea6a3af8729dca4901841d618a..699b50db1b720cbeba17fd8b7d2aa230d1ae067a 100644
--- a/src/main/webapp/resource/template/messageScene-test.htm
+++ b/src/main/webapp/resource/template/messageScene-test.htm
@@ -4,7 +4,7 @@
- 执行测试
+ 执行测试 自定义数据
diff --git a/update.md b/update.md
index fe0dbf4df036ead3ed55f4e8d5a4aeb752afc8b9..cda44c717a087c1c04eaece2fb37c552b2a5e0cd 100644
--- a/update.md
+++ b/update.md
@@ -1,3 +1,11 @@
+### v1.0.3
+#### 2020.2.5
+- 更新:单个场景调试时可自定义报文内容;
+- 修复:HTTP请求时返回302状态时报错的问题;(未测试)
+- 新增:集成swagger4j,可查看api文档,使用方法:修改swagger.properties中disabled=false,启动项目打开http://localhost:8080/doc/index.html,api注解使用请参考https://github.com/cpjit/swagger
+- 更新:生成接口文档时指定名称修改为英文,防止某些Linux服务器上出现文件名中文乱码的文件;
+
+
### v1.0.2
#### 2020.1.2
- 新增:全局变量 -> 数据库取值,可通过SQL语句从数据库获取指定变量;