Skip to content

Commit

Permalink
fix: soft fail fallback response description lookups (#832)
Browse files Browse the repository at this point in the history
  • Loading branch information
samchungy authored Oct 30, 2024
1 parent 36a543c commit e35d2f6
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/util/resolve-schema-reference.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ function resolveSchemaReference (rawSchema, ref) {
return undefined
}

return resolvedReference.definitions[schemaId]
return resolvedReference.definitions?.[schemaId]
}

module.exports = {
Expand Down
57 changes: 57 additions & 0 deletions test/spec/openapi/schema.js
Original file line number Diff line number Diff line change
Expand Up @@ -1022,6 +1022,63 @@ test('add default properties for url params when missing schema.params', async t
})
})

test('support custom transforms which returns $ref in the response', async t => {
const customObject = {}
const opt = {
schema: {
response: {
200: customObject
}
}
}

const fastify = Fastify()
await fastify.register(fastifySwagger, {
openapi: true,
transform: ({ schema, ...rest }) => {
schema.response['200'] = {
$ref: '#/components/schemas/CustomObject'
}
return {
schema,
...rest
}
},
transformObject: ({ openapiObject }) => {
openapiObject.components.schemas.CustomObject = {
type: 'object',
properties: {
hello: {
type: 'string'
}
}
}
return openapiObject
}
})
fastify.post('/', opt, () => { })
await fastify.ready()

const swaggerObject = fastify.swagger()

const swaggerPath = swaggerObject.paths['/'].post
t.has(swaggerPath.responses['200'].content['application/json'].schema, {
$ref: '#/components/schemas/CustomObject'
})

// validate seems to mutate the swaggerPath object
const api = await Swagger.validate(swaggerObject)
const definedPath = api.paths['/'].post
t.same(definedPath.responses['200'].content['application/json'].schema, {
type: 'object',
properties: {
hello: {
type: 'string'
}
}
})
})

test('avoid overwriting params when schema.params is provided', async t => {
const opt = {
schema: {
Expand Down

0 comments on commit e35d2f6

Please sign in to comment.