diff --git a/rswag-specs/lib/rswag/specs/request_factory.rb b/rswag-specs/lib/rswag/specs/request_factory.rb index 00322ca..95f3002 100644 --- a/rswag-specs/lib/rswag/specs/request_factory.rb +++ b/rswag-specs/lib/rswag/specs/request_factory.rb @@ -56,11 +56,11 @@ module Rswag else # Openapi3 if swagger_doc.has_key?(:securityDefinitions) ActiveSupport::Deprecation.warn('Rswag::Specs: WARNING: securityDefinitions is replaced in OpenAPI3! Rename to components/securitySchemes (in swagger_helper.rb)') - (swagger_doc[:securityDefinitions] || {}).slice(*scheme_names).values - else - components = swagger_doc[:components] || {} - (components[:securitySchemes] || {}).slice(*scheme_names).values + swagger_doc[:components] ||= { securitySchemes: swagger_doc[:securityDefinitions] } + swagger_doc.delete(:securityDefinitions) end + components = swagger_doc[:components] || {} + (components[:securitySchemes] || {}).slice(*scheme_names).values end end diff --git a/rswag-specs/spec/rswag/specs/request_factory_spec.rb b/rswag-specs/spec/rswag/specs/request_factory_spec.rb index 4e97d1c..62a06b3 100644 --- a/rswag-specs/spec/rswag/specs/request_factory_spec.rb +++ b/rswag-specs/spec/rswag/specs/request_factory_spec.rb @@ -242,6 +242,7 @@ module Rswag expect(request[:headers]).to eq('HTTP_AUTHORIZATION' => 'Basic foobar') expect(ActiveSupport::Deprecation).to have_received(:warn) .with('Rswag::Specs: WARNING: securityDefinitions is replaced in OpenAPI3! Rename to components/securitySchemes (in swagger_helper.rb)') + expect(swagger_doc[:components]).to have_key(:securitySchemes) end end end diff --git a/test-app/swagger/v1/swagger.json b/test-app/swagger/v1/swagger.json index fd380a8..8e0f3fa 100644 --- a/test-app/swagger/v1/swagger.json +++ b/test-app/swagger/v1/swagger.json @@ -286,14 +286,16 @@ ] } }, - "securityDefinitions": { - "basic_auth": { - "type": "basic" - }, - "api_key": { - "type": "apiKey", - "name": "api_key", - "in": "query" + "components": { + "securitySchemes": { + "basic_auth": { + "type": "basic" + }, + "api_key": { + "type": "apiKey", + "name": "api_key", + "in": "query" + } } } } \ No newline at end of file