Skip to content

Commit d1b35c0

Browse files
committed
Fix: support for GrapeSwaggerRails.options.headers.
1 parent 7103e64 commit d1b35c0

File tree

5 files changed

+43
-8
lines changed

5 files changed

+43
-8
lines changed

app/views/grape_swagger_rails/application/index.html.erb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
url: options.app_url + options.url,
1414
dom_id:"swagger-ui-container",
1515
supportHeaderParams: true,
16-
headers: options.headers,
1716
supportedSubmitMethods: ['get', 'post', 'put', 'delete'],
1817
onComplete: function(swaggerApi, swaggerUi){
1918
if('console' in window) {
@@ -46,6 +45,11 @@
4645
window.authorizations.add("key", null);
4746
}
4847
})
48+
49+
<% GrapeSwaggerRails.options.headers.each_pair do |key, value| %>
50+
<%=raw "window.authorizations.add('key', new ApiKeyAuthorization('#{CGI.escapeHTML(key)}', '#{CGI.escapeHTML(value)}', 'header'));" %>
51+
<% end %>
52+
4953
window.swaggerUi.load();
5054
});
5155
</script>

grape-swagger-rails.gemspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,5 @@ Gem::Specification.new do |spec|
3232
spec.add_development_dependency 'jquery-rails'
3333
spec.add_development_dependency 'grape-swagger-ui'
3434
spec.add_development_dependency 'sprockets'
35+
spec.add_development_dependency 'rack-cors'
3536
end

spec/dummy/app/api/api.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,10 @@ class API < Grape::API
1717
end
1818
end
1919

20+
desc 'Get headers.'
21+
get '/headers' do
22+
request.headers.as_json
23+
end
24+
2025
add_swagger_documentation
2126
end

spec/dummy/config/application.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
require 'action_view/railtie'
55
require 'sprockets/railtie'
66
require 'jquery-rails'
7+
require 'rack/cors'
78

89
Bundler.require(*Rails.groups)
910
require 'grape-swagger-rails'
@@ -12,5 +13,11 @@ module Dummy
1213
class Application < Rails::Application
1314
config.paths.add File.join('app', 'api'), glob: File.join('**', '*.rb')
1415
config.autoload_paths += Dir[Rails.root.join('app', 'api', '*')]
16+
config.middleware.use Rack::Cors do
17+
allow do
18+
origins '*'
19+
resource '*', :headers => :any, :methods => [:get, :post, :options]
20+
end
21+
end
1522
end
1623
end

spec/features/swagger_spec.rb

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,31 @@
11
require 'spec_helper'
22

33
describe 'Swagger' do
4-
before do
5-
visit '/swagger'
4+
context 'swaggerUi' do
5+
before do
6+
visit '/swagger'
7+
end
8+
it 'loads foos resource' do
9+
expect(page).to have_css "li#resource_foos"
10+
end
11+
it 'loads Swagger UI' do
12+
expect(page.evaluate_script('window.swaggerUi != null')).to be true
13+
end
614
end
7-
it 'loads foos resource' do
8-
expect(page).to have_css "li#resource_foos"
9-
end
10-
it 'loads Swagger UI' do
11-
expect(page.evaluate_script('window.swaggerUi != null')).to be true
15+
context "#options.headers" do
16+
before do
17+
GrapeSwaggerRails.options.headers['X-Test-Header'] = 'Test Value'
18+
visit '/swagger'
19+
end
20+
after do
21+
GrapeSwaggerRails.options.headers = {}
22+
end
23+
it 'adds headers' do
24+
find('#endpointListTogger_headers', visible: true).click
25+
find('a[href="#!/headers/GET_api_headers_format"]', visible: true).click
26+
find('.sandbox_header input[name="commit"]', visible: true).click
27+
expect(page).to have_css "span.attribute", text: 'X-Test-Header'
28+
expect(page).to have_css "span.string", text: 'Test Value'
29+
end
1230
end
1331
end

0 commit comments

Comments
 (0)