From 1289af263cc443645634fbfb525c7ae620c57130 Mon Sep 17 00:00:00 2001 From: Jakub Skopal Date: Wed, 1 Apr 2020 19:02:40 +0200 Subject: [PATCH] allow to specify format validation in AJP --- src/framework/types.ts | 1 + src/index.ts | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/framework/types.ts b/src/framework/types.ts index ea82d119..9f9cda5d 100644 --- a/src/framework/types.ts +++ b/src/framework/types.ts @@ -62,6 +62,7 @@ export interface OpenApiValidatorOpts { mode: 'bundle' | 'dereference'; }; operationHandlers?: false | string; + formatValidation?: false | 'fast' | 'fail'; } export namespace OpenAPIV3 { diff --git a/src/index.ts b/src/index.ts index fa2850b0..687ea19a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -31,6 +31,7 @@ export class OpenApiValidator { if (options.fileUploader == null) options.fileUploader = {}; if (options.$refParser == null) options.$refParser = { mode: 'bundle' }; if (options.operationHandlers == null) options.operationHandlers = false; + if (options.formatValidation == null) options.formatValidation = 'fast'; if (options.validateResponses === true) { options.validateResponses = { @@ -174,7 +175,7 @@ export class OpenApiValidator { app: Application | Router, context: OpenApiContext, ): void { - const { coerceTypes, unknownFormats, validateRequests } = this.options; + const { coerceTypes, unknownFormats, validateRequests, formatValidation } = this.options; const { allowUnknownQueryParameters } = ( validateRequests ); @@ -185,6 +186,7 @@ export class OpenApiValidator { useDefaults: true, unknownFormats, allowUnknownQueryParameters, + format: formatValidation }); const requestValidationHandler: OpenApiRequestHandler = (req, res, next) => requestValidator.validate(req, res, next); @@ -196,7 +198,7 @@ export class OpenApiValidator { app: Application | Router, context: OpenApiContext, ): void { - const { coerceTypes, unknownFormats, validateResponses } = this.options; + const { coerceTypes, unknownFormats, validateResponses, formatValidation } = this.options; const { removeAdditional } = validateResponses; const responseValidator = new middlewares.ResponseValidator( @@ -206,6 +208,7 @@ export class OpenApiValidator { coerceTypes, removeAdditional, unknownFormats, + format: formatValidation }, );