mirror of
https://github.com/ditkrg/rswag.git
synced 2026-01-23 06:16:42 +00:00
add conversion oauth flow to flows
This commit is contained in:
parent
231a2d135c
commit
5060697761
@ -37,6 +37,7 @@ module Rswag
|
|||||||
if !doc_version(swagger_doc).start_with?('2')
|
if !doc_version(swagger_doc).start_with?('2')
|
||||||
upgrade_request_type!(metadata)
|
upgrade_request_type!(metadata)
|
||||||
upgrade_servers!(swagger_doc)
|
upgrade_servers!(swagger_doc)
|
||||||
|
upgrade_oauth!(swagger_doc)
|
||||||
end
|
end
|
||||||
|
|
||||||
swagger_doc.deep_merge!(metadata_to_swagger(metadata))
|
swagger_doc.deep_merge!(metadata_to_swagger(metadata))
|
||||||
@ -126,6 +127,7 @@ module Rswag
|
|||||||
end
|
end
|
||||||
|
|
||||||
def upgrade_request_type!(metadata)
|
def upgrade_request_type!(metadata)
|
||||||
|
# No deprecation here as it seems valid to allow type as a shorthand
|
||||||
operation_nodes = metadata[:operation][:parameters] || []
|
operation_nodes = metadata[:operation][:parameters] || []
|
||||||
path_nodes = metadata[:path_item][:parameters] || []
|
path_nodes = metadata[:path_item][:parameters] || []
|
||||||
header_node = metadata[:response][:headers] || {}
|
header_node = metadata[:response][:headers] || {}
|
||||||
@ -140,6 +142,7 @@ module Rswag
|
|||||||
|
|
||||||
def upgrade_servers!(swagger_doc)
|
def upgrade_servers!(swagger_doc)
|
||||||
if swagger_doc[:servers].nil? && swagger_doc.has_key?(:schemes)
|
if swagger_doc[:servers].nil? && swagger_doc.has_key?(:schemes)
|
||||||
|
ActiveSupport::Deprecation.warn('Rswag::Specs: WARNING: schemes, host, and basePath are replaced in OpenAPI3! Rename to array of servers[{url}] (in swagger_helper.rb)')
|
||||||
|
|
||||||
swagger_doc[:servers] = { urls: [] }
|
swagger_doc[:servers] = { urls: [] }
|
||||||
swagger_doc[:schemes].each do |scheme|
|
swagger_doc[:schemes].each do |scheme|
|
||||||
@ -151,6 +154,20 @@ module Rswag
|
|||||||
swagger_doc.delete(:basePath)
|
swagger_doc.delete(:basePath)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def upgrade_oauth!(swagger_doc)
|
||||||
|
# find flow in securitySchemes (securityDefinitions will have been re-written)
|
||||||
|
schemes = swagger_doc.dig(:components, :securitySchemes)
|
||||||
|
if schemes && schemes.any?{ |_k, v| v.has_key?(:flow) }
|
||||||
|
schemes.each do |name, v|
|
||||||
|
if v.has_key?(:flow)
|
||||||
|
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])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -73,7 +73,14 @@ module Rswag
|
|||||||
openapi: '3.0.1',
|
openapi: '3.0.1',
|
||||||
basePath: '/foo',
|
basePath: '/foo',
|
||||||
schemes: ['http', 'https'],
|
schemes: ['http', 'https'],
|
||||||
host: 'api.example.com'
|
host: 'api.example.com',
|
||||||
|
components: {
|
||||||
|
securitySchemes: {
|
||||||
|
my_oauth: {
|
||||||
|
flow: :anything
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
} }
|
} }
|
||||||
let(:document) { nil }
|
let(:document) { nil }
|
||||||
|
|
||||||
@ -104,6 +111,18 @@ module Rswag
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'upgrades oauth flow to flows' do
|
||||||
|
expect(swagger_doc.slice(:components)).to match(
|
||||||
|
components: {
|
||||||
|
securitySchemes: {
|
||||||
|
my_oauth: {
|
||||||
|
flows: [:anything]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user