swagger-express-middleware
swagger-express-middleware copied to clipboard
Example values are populated into requests when property is empty string
Here is an example app:
var express = require('express');
var swagger = require('swagger-express-middleware');
var request = require('request');
var app = express();
swagger({
swagger: '2.0',
info: {
version: '1.0',
title: 'Bug'
},
consumes: [
'application/json'
],
paths: {
'/': {
post: {
parameters: [{
name: 'payload',
in: 'body',
required: true,
schema: {
$ref: '#/definitions/Node'
}
}]
}
}
},
definitions: {
Node: {
type: 'object',
properties: {
name: {
type: 'string',
example: 'should not see'
},
}
}
}
}, app, function(err, middleware) {
app.use(
middleware.metadata(),
middleware.parseRequest(),
middleware.validateRequest(),
function (req, res, next) {
res.status(200).json(req.body).end();
}
);
app.listen(8000, function() {
request({
url: 'http://localhost:8000',
method: 'POST',
body: { name: '' },
json: true,
}, function(err, res, body) {
console.log(body);
});
});
});
This logs
{ name: 'should not see' }
When it should log the value posted:
{ name: '' }
This example value is coming from getValueToValidate
in lib/helpers/json-schema.js
.
Where if you pass an empty string then it returns the example data and updates the value.
This makes perfect sense for default value but not example value.