diff --git a/rswag-specs/lib/rswag/specs/swagger_formatter.rb b/rswag-specs/lib/rswag/specs/swagger_formatter.rb index 0b15f12..37ddd26 100644 --- a/rswag-specs/lib/rswag/specs/swagger_formatter.rb +++ b/rswag-specs/lib/rswag/specs/swagger_formatter.rb @@ -129,9 +129,9 @@ module Rswag end def upgrade_content!(mime_list, target_node) - target_node.merge!(content: {}) schema = target_node[:schema] return if mime_list.empty? || schema.nil? + target_node.merge!(content: {}) mime_list.each do |mime_type| # TODO upgrade to have content-type specific schema diff --git a/rswag-specs/spec/rswag/specs/swagger_formatter_spec.rb b/rswag-specs/spec/rswag/specs/swagger_formatter_spec.rb index 1a9fdf0..2ae0d05 100644 --- a/rswag-specs/spec/rswag/specs/swagger_formatter_spec.rb +++ b/rswag-specs/spec/rswag/specs/swagger_formatter_spec.rb @@ -127,6 +127,56 @@ module Rswag ) end + context 'with empty content' do + let(:swagger_doc) do + { + openapi: '3.0.1', + basePath: '/foo', + schemes: ['http', 'https'], + host: 'api.example.com', + components: { + securitySchemes: { + myClientCredentials: { + type: :oauth2, + flow: :application, + token_url: :somewhere + }, + myAuthorizationCode: { + type: :oauth2, + flow: :accessCode, + token_url: :somewhere + }, + myImplicit: { + type: :oauth2, + flow: :implicit, + token_url: :somewhere + } + } + } + } + end + + it 'converts query and path params, type: to schema: { type: }' do + expect(swagger_doc.slice(:paths)).to match( + paths: { + '/blogs' => { + parameters: [{ schema: { type: :string } }], + post: { + parameters: [{ schema: { type: :string } }], + summary: 'Creates a blog', + responses: { + '201' => { + description: 'blog created', + headers: { schema: { type: :string } } + } + } + } + } + } + ) + end + end + it 'converts basePath, schemas and host to urls' do expect(swagger_doc.slice(:servers)).to match( servers: { diff --git a/test-app/swagger/v1/swagger.json b/test-app/swagger/v1/swagger.json index 957206c..a5ea43b 100644 --- a/test-app/swagger/v1/swagger.json +++ b/test-app/swagger/v1/swagger.json @@ -21,14 +21,10 @@ ], "responses": { "204": { - "description": "Valid credentials", - "content": { - } + "description": "Valid credentials" }, "401": { - "description": "Invalid credentials", - "content": { - } + "description": "Invalid credentials" } } } @@ -49,14 +45,10 @@ ], "responses": { "204": { - "description": "Valid credentials", - "content": { - } + "description": "Valid credentials" }, "401": { - "description": "Invalid credentials", - "content": { - } + "description": "Invalid credentials" } } } @@ -80,14 +72,10 @@ ], "responses": { "204": { - "description": "Valid credentials", - "content": { - } + "description": "Valid credentials" }, "401": { - "description": "Invalid credentials", - "content": { - } + "description": "Invalid credentials" } } } @@ -105,9 +93,7 @@ ], "responses": { "201": { - "description": "blog created", - "content": { - } + "description": "blog created" }, "422": { "description": "invalid request", @@ -148,9 +134,7 @@ ], "responses": { "406": { - "description": "unsupported accept header", - "content": { - } + "description": "unsupported accept header" } } } @@ -252,9 +236,7 @@ } }, "404": { - "description": "blog not found", - "content": { - } + "description": "blog not found" } } } @@ -282,9 +264,7 @@ ], "responses": { "200": { - "description": "blog updated", - "content": { - } + "description": "blog updated" } }, "requestBody": {