Skip to content

Commit 95675e3

Browse files
markevichLeFnord
authored andcommitted
Allow Security Object to be defined (#602)
1 parent 0278379 commit 95675e3

File tree

5 files changed

+20
-1
lines changed

5 files changed

+20
-1
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
* Your contribution here.
66

7+
* [#602](https://github.com/ruby-grape/grape-swagger/pull/602): Allow security object to be defined - [@markevich](https://github.com/markevich).
8+
79
#### Fixes
810

911
* Your contribution here.

README.md

+13
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ end
196196
* [swagger_endpoint_guard](#swagger_endpoint_guard)
197197
* [token_owner](#token_owner)
198198
* [security_definitions](#security_definitions)
199+
* [security](#security)
199200
* [models](#models)
200201
* [tags](#tags)
201202
* [hide_documentation_path](#hide_documentation_path)
@@ -311,6 +312,18 @@ add_swagger_documentation \
311312
}
312313
```
313314

315+
#### security: <a name="security" />
316+
Specify the [Security Object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#securityRequirementObject)
317+
318+
```ruby
319+
add_swagger_documentation \
320+
security: [
321+
{
322+
api_key: []
323+
}
324+
]
325+
```
326+
314327

315328
#### models: <a name="models" />
316329
A list of entities to document. Combine with the [grape-entity](https://github.com/ruby-grape/grape-entity) gem.

lib/grape-swagger/doc_methods.rb

+1
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ def defaults
9999
format: :json,
100100
authorizations: nil,
101101
security_definitions: nil,
102+
security: nil,
102103
api_documentation: { desc: 'Swagger compatible API description' },
103104
specific_api_documentation: { desc: 'Swagger compatible API description for specific API' },
104105
endpoint_auth_wrapper: nil,

lib/grape-swagger/endpoint.rb

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ def swagger_object(target_class, request, options)
2929
produces: content_types_for(target_class),
3030
authorizations: options[:authorizations],
3131
securityDefinitions: options[:security_definitions],
32+
security: options[:security],
3233
host: GrapeSwagger::DocMethods::OptionalObject.build(:host, options, request),
3334
basePath: GrapeSwagger::DocMethods::OptionalObject.build(:base_path, options, request),
3435
schemes: options[:schemes].is_a?(String) ? [options[:schemes]] : options[:schemes]

spec/swagger_v2/api_swagger_v2_global_configuration_spec.rb

+3-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ class ConfigurationApi < Grape::API
2626
mount_path: 'documentation',
2727
add_base_path: true,
2828
add_version: true,
29-
security_definitions: { api_key: { foo: 'bar' } }
29+
security_definitions: { api_key: { foo: 'bar' } },
30+
security: [{ api_key: [] }]
3031
end
3132
end
3233
end
@@ -49,6 +50,7 @@ def app
4950
expect(subject['schemes']).to eql ['https']
5051
expect(subject['securityDefinitions'].keys).to include('api_key')
5152
expect(subject['securityDefinitions']['api_key']).to include('foo' => 'bar')
53+
expect(subject['security']).to include('api_key' => [])
5254
end
5355
end
5456
end

0 commit comments

Comments
 (0)