express-openapi-validator: Referenced Responses with '../' not resolving correctly - I think

Describe the bug I am not sure if this is a bug. But I have a schema that has numerous includes:

index.yaml

....
 /v1/foo:
    $ref: './resources/foo/paths.yaml'
....

paths.yaml

post:
...add the before
  requestBody:
    description: Details to create test
    content:
      application/json:
        schema:
          $ref: './models.yaml#/MyModel'
...add the rest
get:
...add the rest

models.yaml

MyModel:
  allOf:
    - $ref: "#/Test"
    - type: object
       properties:
         test:
           type: string

Having multiple operations in a file appears to produce an error. (I am going to investigate further.)

This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:
TypeError: Cannot read property 'content' of undefined
    at SchemaPreprocessor.extractResponseSchemaNodes (/~/project/node_modules/express-openapi-validator/dist/middlewares/parsers/schema.preprocessor.js:306:25)
    at SchemaPreprocessor.gatherSchemaNodesFromPaths (/~/project/node_modules/express-openapi-validator/dist/middlewares/parsers/schema.preprocessor.js:97:49)
    at SchemaPreprocessor.preProcess (/~/project/node_modules/express-openapi-validator/dist/middlewares/parsers/schema.preprocessor.js:56:24)
    at /~/project/node_modules/express-openapi-validator/dist/openapi.validator.js:81:95

Nope I extended the paths file to have 3 operations and the error resurfaced. — further update It actually looks like the resolution of the $ref pointer in the responses is not working. When I logged it,

{
  "401": { "$ref": "#/paths/~1v1~1tests/get/responses/401" }
}

My schema

responses:
    401:
      $ref: "../responses.yaml#/responses/UnauthorizedError"

— further update, I was able to continue developing by using refParser: dereference

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 15 (5 by maintainers)

Most upvoted comments

Let me get you a in-depth schema. I will have time later this week.