runner-runtime 1.0.70 → 1.0.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/events/api.js CHANGED
@@ -614,9 +614,10 @@ const convert2PostmanOptions = (request, option, variables) => {
614
614
  values: globalsVariables,
615
615
  });
616
616
 
617
+ const protocolVersion = requestJson?.protocol == 'http/1.1' ? 'http1' : (requestJson?.protocol == 'auto' ? 'auto' : 'http2');
617
618
  const requester = {
618
619
  strictSSL: false,
619
- protocolVersion: requestJson?.protocol == 'http/1.1' ? 'http1' : 'http2',
620
+ protocolVersion,
620
621
  timings: true,
621
622
  verbose: false,
622
623
  implicitCacheControl: true,
@@ -1043,7 +1044,7 @@ const convert2PostmanEvent = (request, listen, option) => {
1043
1044
  " pm.response.originalText = function () {",
1044
1045
  " return originalText;",
1045
1046
  " };",
1046
- " pm.response.stream = Buffer.from(body);",
1047
+ ` pm.response.stream = {type: "Buffer", data:Array.from(Buffer.from(body))};`,
1047
1048
  ` pm.variables.set("_pm.response.setBody", body);`,
1048
1049
  " }",
1049
1050
  " };",
@@ -2316,7 +2317,6 @@ module.exports = (event, option, callback, eventRuntimeData, eventResultList) =>
2316
2317
  test(err, cursor, results, item) {
2317
2318
  if (!err) {
2318
2319
  if (!_.includes(['get_parsed_request'], scene)) {
2319
-
2320
2320
  _.forEach(results, (result) => {
2321
2321
  _.forEach(['_variables', 'environment', 'globals'], (varType) => {
2322
2322
  const currentVar = _.get(result, `result.${varType}`);
@@ -2336,6 +2336,22 @@ module.exports = (event, option, callback, eventRuntimeData, eventResultList) =>
2336
2336
  } catch (e) { }
2337
2337
  })
2338
2338
  })
2339
+
2340
+ const tmpResponseBody = _.get(eventRuntimeData, ['variables', 'variables', '_pm.response.setBody']);
2341
+ const tmpResponseCode = _.toInteger(_.get(eventRuntimeData, ['variables', 'variables', '_pm.response.code']));
2342
+
2343
+ if (_.isString(tmpResponseBody)) {
2344
+ _.set(eventRuntimeData, [event?.event_id, "response", "stream"], {
2345
+ type: "Buffer",
2346
+ data: Array.from(Buffer.from(tmpResponseBody))
2347
+ })
2348
+
2349
+ _.set(eventRuntimeData, [event?.event_id, "response", "body"], tmpResponseBody)
2350
+ }
2351
+
2352
+ if (tmpResponseCode > 0) {
2353
+ _.set(eventRuntimeData, [event?.event_id, "response", "code"], tmpResponseCode)
2354
+ }
2339
2355
  }
2340
2356
  }
2341
2357
  },
@@ -2354,8 +2370,8 @@ module.exports = (event, option, callback, eventRuntimeData, eventResultList) =>
2354
2370
 
2355
2371
  item(err, cursor, item, visualizer, result) {
2356
2372
  if (!err && _.isObject(visualizer)) {
2357
- const { error, processed_template } = visualizer;
2358
- _.set(eventRuntimeData[event?.event_id], "visualizer", { error, processed_template });
2373
+ const { error, processedTemplate } = visualizer;
2374
+ _.set(eventRuntimeData[event?.event_id], "visualizer", { error, processed_template: processedTemplate });
2359
2375
  } else {
2360
2376
  _.set(eventRuntimeData[event?.event_id], "visualizer", { error: null, processed_template: "" });
2361
2377
  }
@@ -2381,10 +2397,15 @@ module.exports = (event, option, callback, eventRuntimeData, eventResultList) =>
2381
2397
  return item?.passed === false
2382
2398
  })
2383
2399
 
2400
+ let httpCode = 'Ok';
2401
+
2402
+ if (!_.inRange(_.toInteger(_.get(eventRuntimeData, [event?.event_id, 'response', 'code'])), 200, 300)) {
2403
+ httpCode = _.get(eventRuntimeData, [event?.event_id, 'response', 'status']) || _.get(eventRuntimeData, [event?.event_id, 'error', 'message']);
2404
+ }
2384
2405
  _.set(eventRuntimeData, [event?.event_id, "status"], {
2385
2406
  assert: _.get(eventRuntimeData, [event?.event_id, "assertions"], []),
2386
2407
  success_assert,
2387
- http: _.get(eventRuntimeData, [event?.event_id, 'response', 'status']) || _.get(eventRuntimeData, [event?.event_id, 'error', 'message'])
2408
+ http: httpCode
2388
2409
  });
2389
2410
  }
2390
2411
 
package/index.js CHANGED
@@ -102,9 +102,33 @@ const run = async (events, option, callback) => {
102
102
  const request2HAR = (events, option) => {
103
103
  return new Promise(async (resolve, reject) => {
104
104
  const eventOptions = _.pick(option, ["scene", "lang", "project", "env", "globals", "cookies", "system_configs", "custom_functions", "collection", "database_configs", "enable_sandbox", "sleep", "name", "testing_id"]);
105
+
106
+ // 初始化变量
105
107
  const eventRuntimeData = {
106
- variables: {}
108
+ variables: {
109
+ environment: {},
110
+ variables: {},
111
+ globals: {},
112
+ _globals: {},
113
+ iterationData: {},
114
+ iterationDataArr: []
115
+ }
107
116
  };
117
+
118
+ const tempVars = { environment: _.get(option, 'env.environment', {}), globals: _.get(option, 'globals', {}) };
119
+
120
+ ['environment', 'globals'].forEach((type) => {
121
+ _.forEach(tempVars[type], (value, key) => {
122
+ if (_.isUndefined(_.get(eventRuntimeData, ['variables', type, key]))) {
123
+ _.set(eventRuntimeData, ['variables', type, key], value);
124
+
125
+ if (type === 'globals') {
126
+ _.set(eventRuntimeData, ['variables', `_${type}`, key], value);
127
+ }
128
+ }
129
+ })
130
+ });
131
+
108
132
  const eventResultList = [];
109
133
  const event = _.first(events);
110
134
 
package/libs/utils.js CHANGED
@@ -436,7 +436,7 @@ const formatAutotestReport = (startTimeAt, eventResultList) => {
436
436
  }
437
437
 
438
438
  if (_.includes(['api', 'sample', 'assert', 'assert_visual'], item?.type) && !_.isEmpty(item?.status?.assert) && _.isArray(item?.status?.assert)) {
439
- const assertFailure = _.map(item?.status?.assert, (assertItem) => {
439
+ const assertFailure = _.filter(item?.status?.assert, (assertItem) => {
440
440
  return assertItem?.passed === false
441
441
  })
442
442
 
@@ -451,6 +451,7 @@ const formatAutotestReport = (startTimeAt, eventResultList) => {
451
451
  report.avg_response_size = _.round(totalResponseSize / report.http.total, 2) || 0;
452
452
  report.total_response_time = totalResponseTime;
453
453
  report.total_response_size = totalResponseSize;
454
+
454
455
  return report;
455
456
  }
456
457
 
@@ -495,7 +496,7 @@ const jsfGenerate = (schema, mockRules = [], lang) => {
495
496
 
496
497
  let genResult = undefined;
497
498
 
498
- if (_.some(["default", "examples", "pattern", "format", "x-mock", "enum"], (value) => _.includes(_.keys(schema?.schema), value))) {
499
+ if (_.some(["default", "examples", "pattern", "format", "x-mock", "enum"], (value) => _.includes(_.keys(schema?.schema || schema), value))) {
499
500
  try {
500
501
  genResult = jsf.generate(schema);
501
502
  } catch (e) { }
@@ -557,18 +558,20 @@ const convertEndRuntimeState = (eventRuntimeData, event_id) => {
557
558
  const currentVariables = {};
558
559
 
559
560
  _.forEach(endAllVars, (value, key) => {
560
- let actedUpon = undefined;
561
- ["variables", "iterationData", "environment", "globals"].some((type) => {
562
- if (!_.isUndefined(_.get(endVariables, [`${type}`, key]))) {
563
- actedUpon = type;
564
- return true;
565
- }
566
- })
561
+ if (!_.includes(['_pm.response.code', '_pm.response.setBody'], key)) {
562
+ let actedUpon = undefined;
563
+ ["variables", "iterationData", "environment", "globals"].some((type) => {
564
+ if (!_.isUndefined(_.get(endVariables, [`${type}`, key]))) {
565
+ actedUpon = type;
566
+ return true;
567
+ }
568
+ })
567
569
 
568
- _.set(currentVariables, [key], {
569
- start: _.pick(startAllActedUponVars[key], ['value', 'actedUpon']),
570
- current: { value, actedUpon }
571
- })
570
+ _.set(currentVariables, [key], {
571
+ start: _.pick(startAllActedUponVars[key], ['value', 'actedUpon']),
572
+ current: { value, actedUpon }
573
+ })
574
+ }
572
575
  })
573
576
 
574
577
  return { startTime, endTime, currentVariables };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "runner-runtime",
3
- "version": "1.0.70",
3
+ "version": "1.0.72",
4
4
  "description": "runner-runtime.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -40,7 +40,7 @@
40
40
  "msgpack5": "^6.0.2",
41
41
  "net": "^1.0.2",
42
42
  "postman-collection": "^5.0.2",
43
- "postman-runtime-pro": "^7.43.19",
43
+ "postman-runtime-pro": "^7.43.20",
44
44
  "request-har": "^1.0.0",
45
45
  "strip-json-comments": "^3.1.1",
46
46
  "tough": "^0.6.0",
package/test.js CHANGED
@@ -1,9 +1,9 @@
1
- const _ =require('lodash');
2
- const { run,request2HAR} = require('./index');
1
+ const _ = require('lodash');
2
+ const { run, request2HAR } = require('./index');
3
3
 
4
4
  // 以下为调用示例
5
5
  const callback = (res) => {
6
- console.warn("callback", res)
6
+ // console.warn("callback", JSON.stringify(res, null, 2))
7
7
  }
8
8
 
9
9
 
@@ -122,3 +122,4 @@ const callback = (res) => {
122
122
  //pip end
123
123
  const { option, test_events } = require('./tmp/request'); // tmp todo...
124
124
  run(test_events, option, callback);
125
+ // request2HAR(test_events, option)
package/tmp/request.js CHANGED
@@ -1,13 +1,25 @@
1
1
  module.exports ={
2
2
  "option": {
3
- "scene": "http_request",
3
+ "scene": "auto_test",
4
4
  "globals": {
5
- "name": ""
5
+ "userlist": "[1,2,3,4,5,6]"
6
6
  },
7
7
  "project": {
8
8
  "request": {
9
9
  "header": {
10
10
  "parameter": [
11
+ {
12
+ "param_id": "29f000c66464000",
13
+ "description": "",
14
+ "field_type": "string",
15
+ "is_checked": 1,
16
+ "key": "haha",
17
+ "value": "123",
18
+ "not_null": 1,
19
+ "schema": {
20
+ "type": "string"
21
+ }
22
+ },
11
23
  {
12
24
  "key": "Accept",
13
25
  "value": "*/*",
@@ -55,99 +67,170 @@ module.exports ={
55
67
  }
56
68
  },
57
69
  "env": {
58
- "env_id": "f5e217678302b",
59
- "env_name": "演示环境",
60
- "env_pre_url": "https://demo-api.apipost.cn/api",
70
+ "env_id": "1",
71
+ "env_name": "默认环境",
72
+ "env_pre_url": "",
61
73
  "env_pre_urls": {
62
74
  "1": {
63
75
  "server_id": "1",
64
76
  "name": "默认服务",
65
77
  "sort": 1000,
66
- "uri": "https://demo-api.apipost.cn/api"
78
+ "uri": ""
67
79
  },
68
80
  "default": {
69
81
  "server_id": "1",
70
82
  "name": "默认服务",
71
83
  "sort": 1000,
72
- "uri": "https://demo-api.apipost.cn/api"
84
+ "uri": ""
73
85
  }
74
86
  },
75
- "environment": {}
87
+ "environment": {
88
+ "account": "123456",
89
+ "baseUrl": "https://echo.apipost.cn/",
90
+ "key": "value"
91
+ }
76
92
  },
77
93
  "cookies": {
78
94
  "switch": 1,
79
- "data": []
95
+ "data": [
96
+ {
97
+ "key": "aliyungf_tc",
98
+ "value": "9349f07976a4f959a65c2c0d715f1695b6de2d722fe97c08bb23d8452ef5d151",
99
+ "path": "/",
100
+ "httpOnly": true,
101
+ "creation": "2025-05-09T08:17:28.907Z",
102
+ "name": "aliyungf_tc",
103
+ "cookie_id": "212f6549b643f2",
104
+ "domain": "op.juhe.cn",
105
+ "project_id": "26623ba1a864000"
106
+ },
107
+ {
108
+ "key": "liveCookie",
109
+ "value": "gin",
110
+ "maxAge": 120,
111
+ "domain": "go.apipost.cn",
112
+ "path": "/",
113
+ "secure": true,
114
+ "httpOnly": true,
115
+ "creation": "2025-05-14T06:45:42.930Z",
116
+ "name": "liveCookie",
117
+ "cookie_id": "27803afb76400a",
118
+ "expires": "Wed, 14 May 2025 06:47:43 GMT",
119
+ "project_id": "26623ba1a864000"
120
+ },
121
+ {
122
+ "key": "loseCookie",
123
+ "value": "gin",
124
+ "maxAge": 0,
125
+ "domain": "go.apipost.cn",
126
+ "path": "/",
127
+ "secure": true,
128
+ "httpOnly": true,
129
+ "creation": "2025-05-14T06:45:42.930Z",
130
+ "name": "loseCookie",
131
+ "cookie_id": "27803afb76400b",
132
+ "expires": "Wed, 14 May 2025 06:45:43 GMT",
133
+ "project_id": "26623ba1a864000"
134
+ }
135
+ ]
80
136
  },
81
137
  "system_configs": {
82
138
  "send_timeout": 0,
83
- "auto_redirect": -1,
139
+ "auto_redirect": 1,
84
140
  "max_redirect_time": 5,
85
- "auto_gen_mock_url": 1,
86
- "request_param_auto_json": -1,
141
+ "auto_gen_mock_url": -1,
142
+ "request_param_auto_json": 1,
87
143
  "proxy": {
88
- "type": 2,
89
- "envfirst": 1,
90
- "bypass": [],
144
+ "type": -1,
145
+ "envfirst": -1,
146
+ "bypass": [
147
+ "export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890"
148
+ ],
91
149
  "protocols": [
150
+ "https",
92
151
  "http"
93
152
  ],
94
153
  "auth": {
95
154
  "authenticate": -1,
96
- "host": "",
155
+ "host": "127.0.0.1:7890",
97
156
  "username": "",
98
157
  "password": ""
99
158
  }
100
159
  },
101
160
  "ca_cert": {
102
- "open": -1,
103
- "path": "",
104
- "base64": ""
161
+ "open": 1,
162
+ "path": ""
105
163
  },
106
- "client_cert": {}
164
+ "client_cert": {
165
+ "https://apipost.cn:443": {
166
+ "crt": {
167
+ "file_name": "client (1).crt",
168
+ "file_url": "",
169
+ "file_base64": "data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURuVENDQW9VQ0ZFcDd4Z3J2VVhteWEzTEdmcEFpenRNUkJvN3ZNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1JR0sKTVFzd0NRWURWUVFHRXdKRFRqRVFNQTRHQTFVRUNBd0hRbVZwYW1sdVp6RVFNQTRHQTFVRUJ3d0hRbVZwYW1sdQpaekVRTUE0R0ExVUVDZ3dIWVhCcGNHOXpkREVNTUFvR0ExVUVDd3dEWVhCME1SWXdGQVlEVlFRRERBMWpZeTVoCmNHbHdiM04wTG1Oak1SOHdIUVlKS29aSWh2Y05BUWtCRmhCaFpHMXBia0JoY0dsd2IzTjBMbU5qTUI0WERUSXoKTVRJeE1UQTVOREl4TmxvWERUTXpNVEl3T0RBNU5ESXhObG93Z1lveEN6QUpCZ05WQkFZVEFrTk9NUkF3RGdZRApWUVFJREFkQ1pXbHFhVzVuTVJBd0RnWURWUVFIREFkQ1pXbHFhVzVuTVE4d0RRWURWUVFLREFaaGNHbHZjM1F4CkREQUtCZ05WQkFzTUEyRndkREVXTUJRR0ExVUVBd3dOWTJNdVlYQnBjRzl6ZEM1all6RWdNQjRHQ1NxR1NJYjMKRFFFSkFSWVJZMnhwWlc1MFFHRndhWEJ2YzNRdVkyTXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBdwpnZ0VLQW9JQkFRRG5DalNwV2MvVEovcXg2ZHRCRUlKeHhpME0wTWc1M091U0lNK2dMVnNseTl4SVFTTndGWGhrCi8vRzhTOVl0d2lnMHpwZVNLUlhyNi9tdklQcjlsY3RBakRrZzQ4Q1BQSk5YYVo1RTdQVkRYbThtTXhhS2RBeXEKZVBkT2w2bGJ0a0pWRTB0cElWTFo4UkhEOWU4VFdiNENMNFBUSzkrNFhVSElEUU1FTUdNbWFnRUVRd3ordDdSTQpMZDVvcVAxdHVUdlhBbmlUbmU4TnZhYVQ3NDlqcFhYb3lnV29FaVcwOGJ3NmI2TmZwVVEyeFBsSkdrc2tiblRhCisyTWVqb1ZrSlpDbDFlOUhOYXV2a085WjhQamRYMG9nZTM0OE5pZW83amNDWWhBUmttanVJanhiMU1kU3dPdjcKMTVWS3EwcFFwbjNzVHJrWTVqdjZEeis3dWhSaXVnN2pBZ01CQUFFd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQgpBRGFCdG10NHVPaVpoVlpHdmo1Tko2RUhUUFNGZGxBaVd6U2tiSWllV2RIY1NhK0J3K2xBM1kyalJsYnZNUVVaCndiL21jaFRtNjFJRmlKbnYvN1h2MGtmMkJxUzkyMURXenJHa3FWQk5zRUdIMEdhWGVHMVMwL1pkNXg1RE4zMlEKRW9IRE95K2lOeDlwRzA2cy8ybUlGY1E3eXQ0cW9acXFQZUg4U3VIamZOanlnZnZFUGxiYUJHb0Y4V1dneFluLwp3TzlFK2pYN3VvdlZDWXVrY3NyaEprZzJwK3o5MUFVU3p2NlpTbHlnK3pGM2kyM1Q0ZXA5VDhwRTV2eXE3UlFnClNPT3BQd25uN0d5UWd2UzREbU5LMHkyazc5ZUdGb3VnTWxnS3g1Um5nMUQxNEd0ZFcvMlE0WGxNa2tHZ1ZsR2IKRVRkcGlES1JKWjNTTDJPZ1RsSFpibWM9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K"
170
+ },
171
+ "key": {
172
+ "file_url": "",
173
+ "file_base64": "data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR0VENDQXAyZ0F3SUJBZ0lKQU9ueUNxV09FeCtsTUEwR0NTcUdTSWIzRFFFQkJRVUFNRVV4Q3pBSkJnTlYKQkFZVEFrRlZNUk13RVFZRFZRUUlFd3BUYjIxbExWTjBZWFJsTVNFd0h3WURWUVFLRXhoSmJuUmxjbTVsZENCWAphV1JuYVhSeklGQjBlU0JNZEdRd0hoY05NVFV3TnpFek1UUTFNRE16V2hjTk1UVXdPREV5TVRRMU1ETXpXakJGCk1Rc3dDUVlEVlFRR0V3SkJWVEVUTUJFR0ExVUVDQk1LVTI5dFpTMVRkR0YwWlRFaE1COEdBMVVFQ2hNWVNXNTAKWlhKdVpYUWdWMmxrWjJsMGN5QlFkSGtnVEhSa01JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQgpDZ0tDQVFFQTB1cVdPWUF1ZmgxSHZkNUw0WE8zUEZOZituZE8vVGczUGJEcWl4UTZEYUpqcUw2ZWh6eFJYeHJyCmR6U0N6RlN2b2FPRzFNaUpyazlIdUYvYUVyZ0ExdHFnb0crSmx1VVlKOG9VNzRtVFk3Zmt3dHhPUnpoT2JkSmoKbFoxNm5jNGVEaXBjVWtjUFluY0tQSGxsbnR1MXVDSUNNMkl5TmprcUFNd3lPSERrTGNFY0VyQ1F3YVdlSi80VgpGS3NVdndwbTR0cmRwWVcrelUwWkhUdWtuWkhybERrY1l2ZlE2VSt5bjI3ZEZBUWRwb3A5Q0FyNjdsL2Ftd01RCm9ZT1hqVGx6bWFZOURvRHRVazlCY0tGSUhhVDQwbGJFSDV2OTlXeDNaNE1MQ2JhNHRuQ2oyRTFzZ2UrUWFWcEEKck1aazNDTjN0amM5VUlWa2JGdUZmeUNaK1owSlpRSURBUUFCbzRHbk1JR2tNQjBHQTFVZERnUVdCQlNzandwVAp6Q2YzOGhUQmNsRFNvWEFNSkp6Q1NEQjFCZ05WSFNNRWJqQnNnQlNzandwVHpDZjM4aFRCY2xEU29YQU1KSnpDClNLRkpwRWN3UlRFTE1Ba0dBMVVFQmhNQ1FWVXhFekFSQmdOVkJBZ1RDbE52YldVdFUzUmhkR1V4SVRBZkJnTlYKQkFvVEdFbHVkR1Z5Ym1WMElGZHBaR2RwZEhNZ1VIUjVJRXgwWklJSkFPbnlDcVdPRXgrbE1Bd0dBMVVkRXdRRgpNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUZCUUFEZ2dFQkFJSk52M3cza0VqSGt5QkNiaURwcFFBczdDU2s1SGJzCisrV0EyZm9sdzZaM3I2SUxHWEpVYmhwaitQZ0V1YTVUTW5ja2VEL0lvMXViYnNqaWZ2eHo1UUJrTDIySHQwdkIKTFJpR1FkMGt2TTFUUkFTUyt2UFk1L096Q2hkUVFPamh0UG5Vc0h2dEVwTHV5SkRlV2QyZTV5cFoveDdmMTZRVApwRG16ajRLNG00YkZPUitSWlQxUkN2SjFDclU1VWR0UzBpWVoyczJmVVJJclQ3Qmo5dDhhdmpReTFxQnNzd1E1CkdFUERTRWVoRC96QzkzMlJsSUw4cGhja05kTHRvZGlMaVlSRU8rTGt6MHdDeWpVTG0vYXVMeWlrNzZ1WlZaR3gKTEJwRUp4WU81bmQvYVViYjNsS3liSXJZYXlkSWJBVk5CcWR1SWxaV3M1cmgwclJFOUZNaDcrbz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=",
174
+ "file_name": "cert.pem"
175
+ },
176
+ "password": "1234",
177
+ "pfx": {
178
+ "file_base64": "data:application/x-iwork-keynote-sffkey;base64,LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBNXdvMHFWblAweWY2c2VuYlFSQ0NjY1l0RE5ESU9kenJraURQb0MxYkpjdmNTRUVqCmNCVjRaUC94dkV2V0xjSW9OTTZYa2lrVjYrdjVyeUQ2L1pYTFFJdzVJT1BBanp5VFYybWVST3oxUTE1dkpqTVcKaW5RTXFuajNUcGVwVzdaQ1ZSTkxhU0ZTMmZFUncvWHZFMW0rQWkrRDB5dmZ1RjFCeUEwREJEQmpKbW9CQkVNTQovcmUwVEMzZWFLajliYms3MXdKNGs1M3ZEYjJtaysrUFk2VjE2TW9GcUJJbHRQRzhPbStqWDZWRU5zVDVTUnBMCkpHNTAydnRqSG82RlpDV1FwZFh2UnpXcnI1RHZXZkQ0M1Y5S0lIdCtQRFlucU80M0FtSVFFWkpvN2lJOFc5VEgKVXNEcis5ZVZTcXRLVUtaOTdFNjVHT1k3K2c4L3U3b1VZcm9PNHdJREFRQUJBb0lCQUNXckQwenhIS1lqcFlidQpSdFlEMkJDdXE5ZWtEcEVJaU12SlY3Q1kxSHlFRVVVaWdhR2Jqb2FCQ0N1WC9iSjJMbEgxd05hT3BrbFJydUt6CnNOZzVYT3NJTWFSQUhidjh0MVVRSGtMRWszUkphRHZGSm82cVB3cG9NSUg2emh6cXlVUFBvb0xnY1A2aGhERDcKM3QrN3lQUFlSVmpmbFZrY3MwWG5nUzlrcURXeDBXZStWOGFJMVJCOXVIbUdDcmo4djFZaHFSRWl2dXl4eUVXQwpZSkowVFRqSVhtMC92OVNJRE5FTjJKVExkYmlIdDBvQm9PZk1CWk5MSmhjSWI4cHkvTW5SYW9IN1EvN2VZQllQClNnMzJycXYvZlNjZGhWakltbTNyWEtaclV5NlErcUpNNGp1MCtpV0E4MzRzd2NiaGZhbU5XR2tLcUYzVmo4WEEKendGbkVjRUNnWUVBK056RHpxb3Vlbk9iZE5ORTdFa2FaTDc4TFFlL0VhTkYycHlhS2IvWTFac2F5U2ozSUMxbAp2RCs0V1hQamZJVWl3SldGeEtONGZyVnlldCtZWGhOZ0p3eU9wb2gyZmlaNzExR0paSWRudGFDV3lmRnpGVS8rClZQUm1yUUxIWS9MNHRhdnByTzlhTHBYVWVSYlc0NXVBbUZ5YUtJck1qSkFzMnFpeitKYUxGbUVDZ1lFQTdhcVUKOEE5SHpkVDFsQzB1ZlRoNG1Cdm43enpvSXJHNmY3amhvRVZuazEwWmozKy9pNEFmWEw3VHRuQmtXaTJvZElKbApDb2ZXdGRWbUxvTkhpOER0ZldyWFkzOWhra0ZSSEo5Y01qNEozcEJmaVp0ZUJyaFhucDg1c0xDS0pnWGVNZDNEClhkZVl1TERuczR3Y3FZTnpkbDRQL2cvRGl5RFB5Y29tc3NmdzQ4TUNnWUVBc2pUVWVwOWZIUXpBRzQ1V1lxV08Kb3Vvb2hzNXZRbUFhMjRzYzBoeXhWM1QwWDJ4WVd0Qm5jOEJsY0prT0k5THFxZUhvb29FMC9mZE0vVFEwVmRtbQpGeEJrN2xmMkVpdllycjJTbDB4bk5hYkRrK1MwdG1STUNlWGh5SzZldmJIMTY1SXBpVTcwMHpzenBXcDNneEdOCnFvMVZUd2JscHhwdkpEMStjdHJLeXNFQ2dZRUFyMlo0T3Q4Y0lCVnVGS2h2cWV5Mlc1UWt6UlJIUWV1bTkwSU0KQ2t1T2tGeGlVOXgxRWRCQjFTSGtmNzFjNG96VnlQNis4VkdsTFZkTDdVSG4ySVZQQUlPTWFKc0crSGlLRXpTdApSMHN2MzNqdmVWQVh5Wi9jMG0weWwyc0MyZUwweEJxbFo2bUl4YTJSb3BuaVFWeUpKeTl1WUJOa1BsYTk0Mi8wCnRYY0lHaDhDZ1lCbHJBaVdIOGU4aEhkWjdxTjNOTk51cVkvQjdJWFNPdzFIMEVKbjd3Ui9tZElzalFRYkJGL3gKa05YNndvZDVFeHBzRkVER2lJQ0RiQm1FbW5oaU1TWFBXREhoalZKSkFSUG5sL2Fxc0tNemt0dXdic29DbGQ2OApkT1hkbHNtbGhYZVdrcGp5ZUdCREZ5Y3hPdW80M3F6VzdOOUNpQ285dXBuNGZrSEg3Si95Znc9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=",
179
+ "file_name": "client (1).key",
180
+ "file_url": ""
181
+ },
182
+ "HOST": "https://apipost.cn:443"
183
+ },
184
+ "https://*:443": {
185
+ "crt": {
186
+ "file_name": "client (1).crt",
187
+ "file_url": "",
188
+ "file_base64": "data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURuVENDQW9VQ0ZFcDd4Z3J2VVhteWEzTEdmcEFpenRNUkJvN3ZNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1JR0sKTVFzd0NRWURWUVFHRXdKRFRqRVFNQTRHQTFVRUNBd0hRbVZwYW1sdVp6RVFNQTRHQTFVRUJ3d0hRbVZwYW1sdQpaekVRTUE0R0ExVUVDZ3dIWVhCcGNHOXpkREVNTUFvR0ExVUVDd3dEWVhCME1SWXdGQVlEVlFRRERBMWpZeTVoCmNHbHdiM04wTG1Oak1SOHdIUVlKS29aSWh2Y05BUWtCRmhCaFpHMXBia0JoY0dsd2IzTjBMbU5qTUI0WERUSXoKTVRJeE1UQTVOREl4TmxvWERUTXpNVEl3T0RBNU5ESXhObG93Z1lveEN6QUpCZ05WQkFZVEFrTk9NUkF3RGdZRApWUVFJREFkQ1pXbHFhVzVuTVJBd0RnWURWUVFIREFkQ1pXbHFhVzVuTVE4d0RRWURWUVFLREFaaGNHbHZjM1F4CkREQUtCZ05WQkFzTUEyRndkREVXTUJRR0ExVUVBd3dOWTJNdVlYQnBjRzl6ZEM1all6RWdNQjRHQ1NxR1NJYjMKRFFFSkFSWVJZMnhwWlc1MFFHRndhWEJ2YzNRdVkyTXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBdwpnZ0VLQW9JQkFRRG5DalNwV2MvVEovcXg2ZHRCRUlKeHhpME0wTWc1M091U0lNK2dMVnNseTl4SVFTTndGWGhrCi8vRzhTOVl0d2lnMHpwZVNLUlhyNi9tdklQcjlsY3RBakRrZzQ4Q1BQSk5YYVo1RTdQVkRYbThtTXhhS2RBeXEKZVBkT2w2bGJ0a0pWRTB0cElWTFo4UkhEOWU4VFdiNENMNFBUSzkrNFhVSElEUU1FTUdNbWFnRUVRd3ordDdSTQpMZDVvcVAxdHVUdlhBbmlUbmU4TnZhYVQ3NDlqcFhYb3lnV29FaVcwOGJ3NmI2TmZwVVEyeFBsSkdrc2tiblRhCisyTWVqb1ZrSlpDbDFlOUhOYXV2a085WjhQamRYMG9nZTM0OE5pZW83amNDWWhBUmttanVJanhiMU1kU3dPdjcKMTVWS3EwcFFwbjNzVHJrWTVqdjZEeis3dWhSaXVnN2pBZ01CQUFFd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQgpBRGFCdG10NHVPaVpoVlpHdmo1Tko2RUhUUFNGZGxBaVd6U2tiSWllV2RIY1NhK0J3K2xBM1kyalJsYnZNUVVaCndiL21jaFRtNjFJRmlKbnYvN1h2MGtmMkJxUzkyMURXenJHa3FWQk5zRUdIMEdhWGVHMVMwL1pkNXg1RE4zMlEKRW9IRE95K2lOeDlwRzA2cy8ybUlGY1E3eXQ0cW9acXFQZUg4U3VIamZOanlnZnZFUGxiYUJHb0Y4V1dneFluLwp3TzlFK2pYN3VvdlZDWXVrY3NyaEprZzJwK3o5MUFVU3p2NlpTbHlnK3pGM2kyM1Q0ZXA5VDhwRTV2eXE3UlFnClNPT3BQd25uN0d5UWd2UzREbU5LMHkyazc5ZUdGb3VnTWxnS3g1Um5nMUQxNEd0ZFcvMlE0WGxNa2tHZ1ZsR2IKRVRkcGlES1JKWjNTTDJPZ1RsSFpibWM9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K"
189
+ },
190
+ "key": {
191
+ "file_name": "",
192
+ "file_url": "",
193
+ "file_base64": ""
194
+ },
195
+ "password": "",
196
+ "pfx": {
197
+ "file_base64": "",
198
+ "file_name": "",
199
+ "file_url": ""
200
+ },
201
+ "HOST": "https://*:443"
202
+ }
203
+ }
107
204
  },
108
205
  "custom_functions": {},
109
206
  "collection": [
110
207
  {
111
- "target_id": "f5e2176783030",
208
+ "target_id": "4651a1e0e06e000",
112
209
  "target_type": "api",
113
- "parent_id": "f5e217678302f",
114
- "name": "登录接口token",
210
+ "parent_id": "4651a1dffc6e000",
211
+ "name": "测试接口",
115
212
  "request": {
116
213
  "auth": {
117
214
  "type": "inherit"
118
215
  },
119
216
  "body": {
120
- "mode": "form-data",
217
+ "mode": "urlencoded",
121
218
  "parameter": [
122
219
  {
123
- "param_id": "f5e2171783018",
124
- "description": "手机号",
125
- "field_type": "String",
126
- "is_checked": 1,
127
- "key": "mobile",
128
- "not_null": -1,
129
- "value": "17710994566",
130
- "content_type": "",
131
- "file_name": "",
132
- "file_base64": "",
133
- "schema": {
134
- "type": "string"
135
- }
136
- },
137
- {
138
- "param_id": "f5e2171783019",
139
- "description": "验证码",
140
- "field_type": "String",
220
+ "description": "",
221
+ "field_type": "string",
141
222
  "is_checked": 1,
142
- "key": "ver_code",
143
- "not_null": -1,
144
- "value": "5643",
145
- "content_type": "",
146
- "file_name": "",
147
- "file_base64": "",
223
+ "key": "name",
224
+ "value": "",
225
+ "not_null": 1,
148
226
  "schema": {
149
- "type": "string"
150
- }
227
+ "type": "string",
228
+ "enum": [
229
+ "11",
230
+ "22"
231
+ ]
232
+ },
233
+ "param_id": "2780323bb71007"
151
234
  }
152
235
  ],
153
236
  "raw": "",
@@ -155,10 +238,18 @@ module.exports ={
155
238
  "raw_schema": {
156
239
  "type": "object"
157
240
  },
158
- "binary": null
241
+ "binary": {}
159
242
  },
160
243
  "pre_tasks": [],
161
- "post_tasks": [],
244
+ "post_tasks": [
245
+ {
246
+ "type": "customScript",
247
+ "id": "2789708c764018",
248
+ "name": "自定义脚本",
249
+ "enabled": 1,
250
+ "data": ""
251
+ }
252
+ ],
162
253
  "header": {
163
254
  "parameter": []
164
255
  },
@@ -176,20 +267,57 @@ module.exports ={
176
267
  },
177
268
  "parents": [
178
269
  {
179
- "target_id": "f5e217678302f",
270
+ "target_id": "4651a1dffc6e000",
271
+ "target_type": "folder"
272
+ },
273
+ {
274
+ "target_id": "4651a1dfdc6e000",
180
275
  "target_type": "folder"
181
276
  }
182
277
  ],
183
- "method": "POST",
278
+ "method": "GET",
184
279
  "protocol": "http/1.1",
185
- "url": "/demo/login",
186
- "pre_url": "https://demo-api.apipost.cn/api"
280
+ "url": "http://cc.apipost.cc:6002/httpcode/201",
281
+ "pre_url": ""
282
+ },
283
+ {
284
+ "target_id": "4651a1dffc6e000",
285
+ "target_type": "folder",
286
+ "parent_id": "4651a1dfdc6e000",
287
+ "name": "测试Controller",
288
+ "request": {
289
+ "auth": {
290
+ "type": "inherit"
291
+ },
292
+ "pre_tasks": [],
293
+ "post_tasks": [],
294
+ "body": {
295
+ "parameter": []
296
+ },
297
+ "header": {
298
+ "parameter": []
299
+ },
300
+ "query": {
301
+ "parameter": []
302
+ },
303
+ "cookie": {
304
+ "parameter": []
305
+ }
306
+ },
307
+ "parents": [
308
+ {
309
+ "target_id": "4651a1dfdc6e000",
310
+ "target_type": "folder"
311
+ }
312
+ ],
313
+ "server_id": "0",
314
+ "pre_url": ""
187
315
  },
188
316
  {
189
- "target_id": "f5e217678302f",
317
+ "target_id": "4651a1dfdc6e000",
190
318
  "target_type": "folder",
191
319
  "parent_id": "0",
192
- "name": "新闻App",
320
+ "name": "security-ljk",
193
321
  "request": {
194
322
  "auth": {
195
323
  "type": "inherit"
@@ -211,18 +339,52 @@ module.exports ={
211
339
  },
212
340
  "parents": [],
213
341
  "server_id": "0",
214
- "pre_url": "https://demo-api.apipost.cn/api"
342
+ "pre_url": ""
215
343
  }
216
344
  ],
217
- "database_configs": {}
345
+ "database_configs": {
346
+ "29bc16819464000": {
347
+ "type": "mysql",
348
+ "ssh": {
349
+ "enable": -1,
350
+ "host": "",
351
+ "port": 22,
352
+ "auth_type": 1,
353
+ "username": "",
354
+ "password": "",
355
+ "private_key": "",
356
+ "passphrase": ""
357
+ },
358
+ "dbconfig": {
359
+ "host": "10.10.10.20",
360
+ "port": 1521,
361
+ "user": "root",
362
+ "password": "12333333333",
363
+ "database": "apipost",
364
+ "auth_source": ""
365
+ }
366
+ }
367
+ },
368
+ "name": "未命名测试用例",
369
+ "ignore_error": -1,
370
+ "enable_sandbox": -1,
371
+ "iterationCount": 1,
372
+ "sleep": 0,
373
+ "testing_id": "27896681f64013",
374
+ "iterates_data_id": "0",
375
+ "iterationData": []
218
376
  },
219
377
  "test_events": [
220
378
  {
221
379
  "type": "api",
380
+ "auto_sync": true,
381
+ "test_id": "27896681f64013",
382
+ "event_id": "27896af9764014",
383
+ "enabled": 1,
222
384
  "data": {
223
- "target_id": "f5e2176783030",
224
- "project_id": "292dc7283464000",
225
- "parent_id": "f5e217678302f",
385
+ "target_id": "4651a1e0e06e000",
386
+ "project_id": "26623ba1a864000",
387
+ "parent_id": "4651a1dffc6e000",
226
388
  "target_type": "api"
227
389
  }
228
390
  }