diff --git a/rswag-specs/lib/rswag/specs/swagger_formatter.rb b/rswag-specs/lib/rswag/specs/swagger_formatter.rb index 1e3fb58..d70cbcd 100644 --- a/rswag-specs/lib/rswag/specs/swagger_formatter.rb +++ b/rswag-specs/lib/rswag/specs/swagger_formatter.rb @@ -197,7 +197,10 @@ module Rswag ActiveSupport::Deprecation.warn("Rswag::Specs: WARNING: securityDefinitions flow is replaced in OpenAPI3! Rename to components/securitySchemes/#{name}/flows[] (in swagger_helper.rb)") flow = swagger_doc[:components][:securitySchemes][name].delete(:flow) - swagger_doc[:components][:securitySchemes][name].merge!(flows: [flow]) + flow_elements = swagger_doc[:components][:securitySchemes][name].except(:type).each_with_object({}) do |(k, _v), a| + a[k] = swagger_doc[:components][:securitySchemes][name].delete(k) + end + swagger_doc[:components][:securitySchemes][name].merge!(flows: { flow => flow_elements }) end end end diff --git a/rswag-specs/spec/rswag/specs/swagger_formatter_spec.rb b/rswag-specs/spec/rswag/specs/swagger_formatter_spec.rb index f9b963d..a233471 100644 --- a/rswag-specs/spec/rswag/specs/swagger_formatter_spec.rb +++ b/rswag-specs/spec/rswag/specs/swagger_formatter_spec.rb @@ -79,7 +79,9 @@ module Rswag components: { securitySchemes: { my_oauth: { - flow: :anything + type: :oauth2, + flow: :anything, + token_url: :somewhere } } } @@ -128,7 +130,12 @@ module Rswag components: { securitySchemes: { my_oauth: { - flows: [:anything] + type: :oauth2, + flows: { + anything: { + token_url: :somewhere + } + } } } }