Skip to content

Response validation does not work when multiple response content-types are defined in the API #288

@tomasvalentaopenbean

Description

@tomasvalentaopenbean

Are you using jest or chai?
Chai

Are you using OpenAPI 2, 3.0.X, or 3.1.0?
3.0.3

Describe the bug clearly
When API has defined multiple content-types as possible responses, the validation only picks up the first defined content-type and fails when the API returns the other content-type in the response.

Steps to reproduce the bug:

  1. Define an API that returns 2 content-types:
get:
  summary: Get Something
  operationId: getSomething
  responses:
    '200':
      content:
        text/csv:
          schema:
            type: string
            format: binary
        application/json:
          schema:
            type: array
            items:
              type: string
  1. Send a request that generates the 2nd content-type as a response
  2. An error is received (see below)
 AssertionError: expected res to satisfy API spec

expected res to satisfy the '200' response defined for endpoint 'GET /something' in your API spec

res did not satisfy it because: response must be string

res contained: {
  body: [
    'text1',
    'text2',
    'text3',
    'text4',
    'text5'
  ]
}

The '200' response defined for endpoint 'GET /something' in API spec: {
  '200': {
    description: "Get something.",
    content: {
      'text/csv': { schema: { type: 'string', format: 'binary' } },
      'application/json': {
        schema: { type: 'array', items: { type: 'string' } } }
      }
    }
  }
}

What did you expect to happen instead?
Validation should pass because the response is valid.

Are you going to resolve the issue?

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions