Skip to content

validateSchema.js: comparación estricta '=== true' desactiva AJV en silencio si validate_schema no es booleano #130

Description

@SebastianDT1

Descripción

src/generator/validateSchema.js (línea 19) decide si mantiene activo el bloque de validación AJV comparando de forma estricta:

if (validate_schema === true) {
    ...
} else {
    deleteValidateSchema(collection[i].item[j].item[k].event[0].script.exec)
}

Si validate_schema llega como cualquier valor "truthy" que no sea el booleano exacto true (por ejemplo el string "true"), cae al else y comenta el bloque AJV en todas las requests, sin ningún warning ni error — da la sensación de que la opción "Validate output schema" no funciona.

Reproducción

Usando example/swagger.yaml + example/o2p_config_file.json:

  • validate_schema: true (booleano) → AJV queda activo correctamente en todos los requests JSON.
  • validate_schema: "true" (string, mismo valor pero mal tipado) → AJV sale comentado (/*var Ajv = require("ajv"); ... });*/) en absolutamente todas las requests.
node index.js -f swagger.yaml -c <config con validate_schema:"true">

Impacto

Si el consumidor de la librería (UI, script, config generado a mano) serializa el flag como string en vez de booleano, la validación de schema se desactiva completamente sin ningún aviso, y es difícil de diagnosticar porque el config "parece" correcto a simple vista.

Fix propuesto

  • Coercionar el valor recibido a booleano antes de comparar (Boolean(validate_schema) o validate_schema === true || validate_schema === 'true'), o
  • Validar el tipo de validate_schema al inicio y lanzar un error claro si no es booleano, en vez de fallar en silencio.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions