You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
So in my swagger yaml i define that all errors are of this structure: ResponseMessage: required: - message properties: message: type: string
And that the api produces application/json.
Also, I have an error middleware plugged into express: app.use(errorHandler);
// and a response validation listener (that should only be called if there actually are any errors or warnings) swaggerExpress.runner.on('responseValidationError', function(validationResponse, request, response) { config.logger.error('swagger validation error', validationResponse.errors); });
The problem I encounter is that when I trigger an error, it goes to the errorHandler(), to the .json({message: err.message}) -> res.send (from express) -> which at some point triggers the this.end() -> which triggers hookEnd from connect_middleware.js (from swagger-node-runner) -> ...-> convertValue (from sway) which simply returns the raw JSON (which is a Buffer value) and then tries to validate the schema against that -> which obviously fails.
What am I missing here?
The text was updated successfully, but these errors were encountered:
So noticed some other things inside the sway/lib/helpers.js -> convertValue that should actually convert the raw JavascriptObject to a proper Object, the line 173: var type = _.isPlainObject(schema) ? schema.type : undefined;
seems to be the troublemaker since it evaluates the schema:
as type undefined which leads to line 193 getting triggered if (_.isUndefined(value)) { return value; }
instead of line 202 which would trigger if the undefined check was not done before
Hello,
So in my swagger yaml i define that all errors are of this structure:
ResponseMessage: required: - message properties: message: type: string
And that the api produces application/json.
Also, I have an error middleware plugged into express:
app.use(errorHandler);
// and a response validation listener (that should only be called if there actually are any errors or warnings) swaggerExpress.runner.on('responseValidationError', function(validationResponse, request, response) { config.logger.error('swagger validation error', validationResponse.errors); });
export function errorHandler(err, req, res, next) { res.status(500).json({message: err.message}); res.end(); }
The problem I encounter is that when I trigger an error, it goes to the errorHandler(), to the .json({message: err.message}) -> res.send (from express) -> which at some point triggers the this.end() -> which triggers hookEnd from connect_middleware.js (from swagger-node-runner) -> ...-> convertValue (from sway) which simply returns the raw JSON (which is a Buffer value) and then tries to validate the schema against that -> which obviously fails.
What am I missing here?
The text was updated successfully, but these errors were encountered: