apigee-127 / swagger-tools

A Node.js and browser module that provides tooling around Swagger.
MIT License
701 stars 373 forks source link

Swagger metadata stopped working on a path after 0.10.1 #554

Open p-j opened 6 years ago

p-j commented 6 years ago

Hi, we are using swagger-tools on a project and will updating it from 0.10.1 to 0.10.3 some test of ours started failing.

A quick diagnostic shows this: 0.10.1

  swagger-tools:middleware:metadata GET /files/1/-/preview/ +437ms
  swagger-tools:middleware:metadata   Is a Swagger path: true +0ms
  swagger-tools:middleware:metadata   Is a Swagger operation: true +0ms
  swagger-tools:middleware:metadata   Processing Parameters +1ms
  swagger-tools:middleware:metadata     fileId +0ms
  swagger-tools:middleware:metadata       Type: integer +0ms
  swagger-tools:middleware:metadata       Value provided: true +0ms
  swagger-tools:middleware:metadata       Value: 1 +1ms
  swagger-tools:middleware:ui GET /files/1/-/preview/ +0ms
  swagger-tools:middleware:ui   Will process: no +0ms
  swagger-tools:middleware:validator GET /files/1/-/preview/ +7ms
  swagger-tools:middleware:validator   Will process: yes +0ms
  swagger-tools:middleware:validator   Request validation: +0ms
  swagger-tools:middleware:validator     Validation: succeeded +1ms

  ․

  1 passing (837ms)

0.10.2 (and superior)

  swagger-tools:middleware:metadata GET /files/1/-/preview/ +505ms
  swagger-tools:middleware:metadata   Is a Swagger path: false +0ms
  swagger-tools:middleware:ui GET /files/1/-/preview/ +2s
  swagger-tools:middleware:ui   Will process: no +0ms

  !

  0 passing (963ms)
  1 failing

Here is the route definition:

/**
 * @swagger
 * /files/{fileId}/-/*:
 *   get:
 *     tags:
 *       - file
 *     description: Returns file based on ID
 *     summary: Returns transformed file by ID
 *     produces:
 *       - image/jpeg
 *       - image/png
 *     parameters:
 *       - $ref: '#/parameters/fileId'
 *     responses:
 *       '200':
 *         description: the transformed file
 *       '401':
 *         $ref: '#/responses/Unauthorized'
 *       '404':
 *         $ref: '#/responses/NotFound'
 *       default:
 *         $ref: '#/responses/Unknown'
 */
router
  .route('/files/:fileId/-/*')
  .all(swaggerValidator())
  .get((req, res, next) => {
    const transformPath = req.path.replace(/\/files\/\d+/i, '')
    return res.redirect(helpers.urls.files.transform(req.fetched_file.id, transformPath))
  })

Should we change something for the middleware to continue working properly ?

Thanks

whitlockjc commented 6 years ago

I'll have to look into it. Thanks for the report.

sido420 commented 6 years ago

Could https://github.com/apigee-127/swagger-tools/issues/184#issuecomment-366138023 be related?