krakenjs / swaggerize-express

Design-driven apis with swagger 2.0 and express.
Other
354 stars 81 forks source link

Security property in the root of the swagger definition is not handled. #119

Closed ghost closed 7 years ago

ghost commented 7 years ago

When one creates a swagger schema where there is a security property stated in the root of the swagger definition (http://swagger.io/specification/). This should trigger a handler for every api call in my opinion, preferable before the route handlers security handlers are called upon on.

I would expect swaggerize-express to call the method exported in default_auth.js according to the following example.

var routes = swaggerize({
            api: apiSpecs,
            handlers: path.join(__dirname, 'handlers'),
            docspath: 'api-docs',
            security: path.join(__dirname, 'security')
        });

        app.use(routes);

        http.createServer(app).listen(8080, function () {
            console.log("Express server listening on port " + '8080 try /v1/pets');
        });

With the pets example:

swagger: "2.0"
info:
  version: 1.0.0
  title: Swagger Petstore
  license:
    name: MIT
host: petstore.swagger.io
basePath: /v1
schemes:
  - http
consumes:
  - application/json
produces:
  - application/json
securityDefinitions:
  default_auth:
    type: apiKey
    in: header
    name: SIMPLE-API-KEY
  admin_auth:
    type: apiKey
    in: header
    name: SIMPLE-API-KEY
security:
- default_auth: []
paths:
  /pets:
    get:
      summary: List all pets
      operationId: listPets
      tags:
        - pets
      parameters:
        - name: limit
          in: query
          description: How many items to return at one time (max 100)
          required: false
          type: integer
          format: int32
      responses:
        "200":
          description: An paged array of pets
          headers:
            x-next:
              type: string
              description: A link to the next page of responses
          schema:
            $ref: '#/definitions/Pets'
        default:
          description: unexpected error
          schema:
            $ref: '#/definitions/Error'
    post:
      summary: Create a pet
      operationId: createPets
      tags:
        - pets
      security:
        - admin_auth: []
      responses:
        "201":
          description: Null response
        default:
          description: unexpected error
          schema:
            $ref: '#/definitions/Error'
definitions:
  Pet:
    required:
      - id
      - name
    properties:
      id:
        type: integer
        format: int64
      name:
        type: string
      tag:
        type: string
  Pets:
    type: array
    items:
      $ref: '#/definitions/Pet'
  Error:
    required:
      - code
      - message
    properties:
      code:
        type: integer
        format: int32
      message:
        type: string

I could be mistaken of course!

swaggerize-express version: 4.0.5

ghost commented 7 years ago

Ok ok got this workin'. Forget it 🤓