@fastify/swagger
Advanced tools
Comparing version 6.1.0 to 6.1.1
@@ -237,3 +237,3 @@ 'use strict' | ||
const arr = plainJsonObjectToOpenapi3(container, resolved, sharedSchemas, securityIgnores) | ||
const arr = plainJsonObjectToOpenapi3(container, resolved, { ...sharedSchemas, ...ref.definitions().definitions }, securityIgnores) | ||
arr.forEach(swaggerSchema => parameters.push(swaggerSchema)) | ||
@@ -240,0 +240,0 @@ } |
@@ -186,4 +186,7 @@ 'use strict' | ||
// $ref is in the format: #/definitions/<resolved definition>/<optional fragment> | ||
const localRef = jsonSchema.$ref.split('/')[2] | ||
return resolveLocalRef(externalSchemas[localRef], externalSchemas) | ||
const refSplit = jsonSchema.$ref.split('/') | ||
const localRef = refSplit[2] | ||
if (externalSchemas[localRef]) return resolveLocalRef(externalSchemas[localRef], externalSchemas) | ||
// $ref is in the format: #/components/schemas/<resolved definition> | ||
return resolveLocalRef(externalSchemas[refSplit[3]], externalSchemas) | ||
} | ||
@@ -190,0 +193,0 @@ |
{ | ||
"name": "@fastify/swagger", | ||
"version": "6.1.0", | ||
"version": "6.1.1", | ||
"description": "Serve Swagger/OpenAPI documentation for Fastify, supporting dynamic generation", | ||
@@ -44,2 +44,3 @@ "main": "index.js", | ||
"devDependencies": { | ||
"@apidevtools/swagger-parser": "^10.1.0", | ||
"@types/node": "^17.0.0", | ||
@@ -56,3 +57,2 @@ "fastify": "^3.7.0", | ||
"standard": "^17.0.0", | ||
"swagger-parser": "^10.0.2", | ||
"swagger-ui-dist": "4.6.2", | ||
@@ -59,0 +59,0 @@ "tap": "^16.0.0", |
@@ -9,3 +9,3 @@ 'use strict' | ||
const yaml = require('js-yaml') | ||
const Swagger = require('swagger-parser') | ||
const Swagger = require('@apidevtools/swagger-parser') | ||
@@ -12,0 +12,0 @@ const resolve = require('path').resolve |
@@ -6,3 +6,3 @@ 'use strict' | ||
const Fastify = require('fastify') | ||
const Swagger = require('swagger-parser') | ||
const Swagger = require('@apidevtools/swagger-parser') | ||
const yaml = require('js-yaml') | ||
@@ -9,0 +9,0 @@ const fastifySwagger = require('../index') |
@@ -5,3 +5,3 @@ 'use strict' | ||
const Fastify = require('fastify') | ||
const Swagger = require('swagger-parser') | ||
const Swagger = require('@apidevtools/swagger-parser') | ||
const yaml = require('js-yaml') | ||
@@ -8,0 +8,0 @@ const fastifySwagger = require('../../../index') |
@@ -5,3 +5,3 @@ 'use strict' | ||
const Fastify = require('fastify') | ||
const Swagger = require('swagger-parser') | ||
const Swagger = require('@apidevtools/swagger-parser') | ||
const fastifySwagger = require('../../../index') | ||
@@ -196,1 +196,47 @@ | ||
}) | ||
test('support $ref schema in allOf in querystring', async (t) => { | ||
const fastify = Fastify() | ||
await fastify.register(fastifySwagger, { openapi: {} }) | ||
fastify.register(async (instance) => { | ||
instance.addSchema({ $id: 'schemaA', type: 'object', properties: { field1: { type: 'integer' } } }) | ||
instance.get('/url1', { schema: { query: { type: 'object', allOf: [{ $ref: 'schemaA#' }, { type: 'object', properties: { field3: { type: 'boolean' } } }] }, response: { 200: { type: 'object' } } } }, async () => ({ result: 'OK' })) | ||
}) | ||
await fastify.ready() | ||
const openapiObject = fastify.swagger() | ||
t.equal(typeof openapiObject, 'object') | ||
const schemas = openapiObject.components.schemas | ||
t.match(Object.keys(schemas), ['def-0']) | ||
await Swagger.validate(openapiObject) | ||
const responseAfterSwagger = await fastify.inject({ method: 'GET', url: '/url1', query: { field1: 10, field3: false } }) | ||
t.equal(responseAfterSwagger.statusCode, 200) | ||
}) | ||
test('support $ref schema in allOf in headers', async (t) => { | ||
const fastify = Fastify() | ||
await fastify.register(fastifySwagger, { openapi: {} }) | ||
fastify.register(async (instance) => { | ||
instance.addSchema({ $id: 'headerA', type: 'object', properties: { 'x-header-1': { type: 'string' } } }) | ||
instance.get('/url1', { schema: { headers: { allOf: [{ $ref: 'headerA#' }, { type: 'object', properties: { 'x-header-2': { type: 'string' } } }] }, response: { 200: { type: 'object' } } } }, async () => ({ result: 'OK' })) | ||
}) | ||
await fastify.ready() | ||
const openapiObject = fastify.swagger() | ||
t.equal(typeof openapiObject, 'object') | ||
const schemas = openapiObject.components.schemas | ||
t.match(Object.keys(schemas), ['def-0']) | ||
await Swagger.validate(openapiObject) | ||
const responseAfterSwagger = await fastify.inject({ method: 'GET', url: '/url1', headers: { 'x-header-1': 'test', 'x-header-2': 'test' } }) | ||
t.equal(responseAfterSwagger.statusCode, 200) | ||
}) |
@@ -5,3 +5,3 @@ 'use strict' | ||
const Fastify = require('fastify') | ||
const Swagger = require('swagger-parser') | ||
const Swagger = require('@apidevtools/swagger-parser') | ||
const yaml = require('js-yaml') | ||
@@ -8,0 +8,0 @@ const fastifySwagger = require('../../../index') |
@@ -5,3 +5,3 @@ 'use strict' | ||
const Fastify = require('fastify') | ||
const Swagger = require('swagger-parser') | ||
const Swagger = require('@apidevtools/swagger-parser') | ||
const fastifySwagger = require('../../../index') | ||
@@ -46,2 +46,44 @@ const S = require('fluent-json-schema') | ||
test('support - oneOf, anyOf, allOf in headers', async (t) => { | ||
t.plan(2) | ||
const fastify = Fastify() | ||
await fastify.register(fastifySwagger, openapiOption) | ||
const schema = { | ||
schema: { | ||
headers: { | ||
allOf: [ | ||
{ | ||
type: 'object', | ||
properties: { | ||
foo: { type: 'string' } | ||
} | ||
} | ||
] | ||
} | ||
} | ||
} | ||
fastify.get('/', schema, () => {}) | ||
await fastify.ready() | ||
const openapiObject = fastify.swagger() | ||
const api = await Swagger.validate(openapiObject) | ||
const definedPath = api.paths['/'].get | ||
t.ok(definedPath) | ||
t.same(definedPath.parameters, [ | ||
{ | ||
required: false, | ||
in: 'header', | ||
name: 'foo', | ||
description: undefined, | ||
schema: { | ||
type: 'string' | ||
} | ||
} | ||
]) | ||
}) | ||
test('support 2xx response', async t => { | ||
@@ -48,0 +90,0 @@ const opt = { |
@@ -5,3 +5,3 @@ 'use strict' | ||
const Fastify = require('fastify') | ||
const Swagger = require('swagger-parser') | ||
const Swagger = require('@apidevtools/swagger-parser') | ||
const yaml = require('js-yaml') | ||
@@ -8,0 +8,0 @@ const fastifySwagger = require('../../../index') |
@@ -5,3 +5,3 @@ 'use strict' | ||
const Fastify = require('fastify') | ||
const Swagger = require('swagger-parser') | ||
const Swagger = require('@apidevtools/swagger-parser') | ||
const fastifySwagger = require('../../../index') | ||
@@ -8,0 +8,0 @@ |
@@ -5,3 +5,3 @@ 'use strict' | ||
const Fastify = require('fastify') | ||
const Swagger = require('swagger-parser') | ||
const Swagger = require('@apidevtools/swagger-parser') | ||
const yaml = require('js-yaml') | ||
@@ -8,0 +8,0 @@ const fastifySwagger = require('../../../index') |
@@ -5,3 +5,3 @@ 'use strict' | ||
const Fastify = require('fastify') | ||
const Swagger = require('swagger-parser') | ||
const Swagger = require('@apidevtools/swagger-parser') | ||
const fastifySwagger = require('../../../index') | ||
@@ -8,0 +8,0 @@ const S = require('fluent-json-schema') |
5486055
72
16338