duckdoc-jsoner v0.8.5
duckdoc-jsoner
Integrating duckdoc-jsoner within the testing process and prepares .json files of each endpoint based on tests of each endpoint. duckdoc then parses those files and renders to static document sites (i.e., .html).
compatibility
| duckdoc | duckdoc-jsoner |
|---|---|
| 0.10.x | 0.7.x |
| 0.11.x | 0.8.x |
install
$ npm install --save-dev duckdoc-jsonerEndpoint && Task
definition
Endpoint: ONE url with ONE http method, ex.GEThttp://example.com/api/userTask: making ONE request to an Endpoint, containing the information of request and response.
example
let path = require('path');
let jsoner, { Task, Endpoint } = require('duckdoc-jsoner');
// let Endpoint = require('duckdoc-jsoner').Endpoint;
jsoner.outputPath = path.join(__dirname, './duckdoc/json');
let endpoint = new Endpoint("Get customer info.", "/customer");
// Endpiont.contructor(endpointName, pathParams)
let task = Task.createFromRequest(response, response.body);
endpoint.tasks.push(task);
jsoner.createEndpoint(endpoint);task.options
let task = Task.createFromRequest(response, response.body);
task.options = {
name: "Success({StatusCode})",
description: "success situation",
req: {
body: {
description: {
email: "user email",
"isAnArray.__first_item.name": "name description"
},
optionalParams: [
"deviceUUID", // optional parameter
"isAnArray.__first_item.name"
],
}
},
res: {
body: {
// same as req.body
}
}
};properties
jsoner
jsoner.outputPath:.jsonfile output pathjsoner.createEndpoint(endpoint): create.jsonofendpoint
Endpoint
Endpoint.endpointName: name of the endpointEndpoint.pathParms: path parameters, ex./user/:idEndpoint.tasks: an Array ofTaskobjects
Task
Task.createFromRequest(response, body): returnTaskobject generated from response of requestTask.createFromAxios(response): returnTaskobject generated from response of axiostask.options-name: endpoint name with{StatusCode}keyword -description: endpoint description -(req/res).body: - description:Object, external description of each field - optionalParams:Array, specification optional fields
jsonerparses the first item of an array to get a sense of the data format. Use__first.itemto indicate the items of array.
As the jsoner is designed to be integrated within the testing process, the concept is to load req/res from realistic http request. The manually added informations are specified in options.
deprecated usage
create with javscript object
var jsoner = require('duckdoc-jsoner');
let api = {
"method": "GET",
"url": "https://localhost:8000/register",
"req": {
"headers": {
"content-type": "application/json"
},
"body": {
"email": "xxx@xxx.xxx",
"tel": "xxxxxxx",
"deviceUUID": "xxxx-xxx-xxx",
"isAnArray": [
{
"name": "user name"
}//, {...}, {...}
]
}
},
"res": {
"status": {
"code": 200,
"message": "OK",
},
"body": {
"message": "Register success."
},
"headers": {
"content-type": "image/png"
},
}
};
jsoner.outputPath = path.join(__dirname, './duckdoc/json');
jsoner.createFromAPI(api);options
// ...
let options = {
endpointName: "User register",
pathParams: "/user/:id",
req: {
body: {
description: {
email: "user email",
"isAnArray.__first_item.name": "name description"
},
optionalParams: [
"deviceUUID", // optional parameter
"isAnArray.__first_item.name"
]
}
},
res: {
body: {
// same as req.body
}
}
};
jsoner.createFromAPI(api, options);use
__first.itemto indicate the items of array.
As the jsoner is designed to be integrated within the testing process, the concept is to load api from realistic http request. The manually added informations are specified in options.
Using with request or request-promise
var jsoner = require('duckdoc-jsoner');
jsoner.ouputPath = "path/to/output/folder";
request(options, function (error, response, body) {
let opt = {
endpointName :'GET Test',
pathParams: '/test'
};
jsoner.createFromResponse(response, body, opt);
});
// options: resolveWithFullResponse: true
rq(options).then(function (response) {
jsoner.createFromResponse(response, response.body);
});properties
jsoner.outputPath:.jsonfile output pathjsoner.createFromAPI(api, options)jsoner.createFromResponse(response, body, options)
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago