maxdome / swagger-combine

Combines multiple Swagger schemas into one dereferenced schema.
MIT License
132 stars 36 forks source link

Unwanted conversion from string to integer in examples #94

Open Mcourt opened 4 years ago

Mcourt commented 4 years ago

Describe the bug My examples are being converted to integers although they should be strings (ex: phone numbers). This causes problem when validating my openapi file, as the parameter is set as "string" but has a number as example.

To Reproduce

  1. Given this OpenAPI document
    
    openapi: 3.0.0
    info:
    title: My title
    version: 1.0.0
    paths:
    /my/route:
    post:
      summary: My route
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                phone:
                  type: string
                  example: "0612345678"
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
2. I execute the combine command
3. I get the following document (Notice the number example)

openapi: 3.0.0 info: title: My title version: 1.0.0 paths: /my/route: post: summary: My route requestBody: content: application/json: schema: type: object properties: phone: type: string example: 0612345678 required: true responses: '204': description: No Content '400': description: Bad Request



**Expected behavior**
I expected my example to stay as a string.
fabsrc commented 4 years ago

This seems to be a bug in the js-yaml package. See: https://github.com/nodeca/js-yaml/issues/530

Tried it with your example:

node -e "console.log(require('js-yaml').safeDump({example: '0612345678'}))"
//  example: 0612345678

Using only digits below 8 (octal digits) seems to work fine:

node -e "console.log(require('js-yaml').safeDump({example: '0612345677'}))"
//  example: '0612345677'