Skip to content

Commit f5ad4bc

Browse files
Andrzej Piątyszekdblock
authored andcommitted
Fix api key default value (#82)
* add failing spec * fix adding api_key_default_value to headers * update changelog * bump rubocop to fix rake issue * add geckodriver to fix issues with new selenium-webdriver * fix specs * change gem versions to keep ruby 2.0.0 compatibility
1 parent 34a4d36 commit f5ad4bc

File tree

8 files changed

+49
-14
lines changed

8 files changed

+49
-14
lines changed

.rubocop_todo.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# This configuration was generated by
22
# `rubocop --auto-gen-config`
3-
# on 2015-08-19 12:23:54 -0400 using RuboCop version 0.33.0.
3+
# on 2015-08-19 12:23:54 -0400 using RuboCop version 0.38.0.
44
# The point is for the user to remove these configuration records
55
# one by one as the offenses are removed from the code base.
66
# Note that changes in the inspected code, or installation of new

.travis.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
11
sudo: false
22

3+
addons:
4+
firefox: "latest"
35
before_install:
46
- "export DISPLAY=:99.0"
57
- "sh -e /etc/init.d/xvfb start"
8+
- wget https://github.com/mozilla/geckodriver/releases/download/v0.16.1/geckodriver-v0.16.1-linux64.tar.gz
9+
- mkdir geckodriver
10+
- tar -xzf geckodriver-v0.16.1-linux64.tar.gz -C geckodriver
11+
- export PATH=$PATH:$PWD/geckodriver
12+
- gem install bundler
613

714
language: ruby
815

CHANGELOG.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
Next Release
2-
============
1+
### Next Release
32

43
* Your contribution here.
4+
* [#82](https://github.com/ruby-grape/grape-swagger-rails/pull/82): Fixed api_key_default_value - [@konto-andrzeja](https://github.com/konto-andrzeja).
55

66
### 0.3.0 (September 22, 2016)
77

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

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@
1515
<%=raw "headers.header_#{index} = new SwaggerClient.ApiKeyAuthorization('#{CGI.escapeHTML(key)}', '#{CGI.escapeHTML(value)}', 'header');" %>
1616
<% end %>
1717

18+
<% if GrapeSwaggerRails.options.api_key_default_value.try(:strip).present? &&
19+
GrapeSwaggerRails.options.headers['Authorization'].blank? %>
20+
<% headers_count = GrapeSwaggerRails.options.headers.count %>
21+
<%= raw "headers.header_#{headers_count} = getApiKeyAuthorization();" %>
22+
<% end %>
23+
1824
window.swaggerUi = new SwaggerUi({
1925
url: options.app_url + options.url,
2026
dom_id: "swagger-ui-container",
@@ -28,7 +34,6 @@
2834
console.log(swaggerUi);
2935
}
3036
$('pre code').each(function(i, e) {hljs.highlightBlock(e)});
31-
addApiKeyAuthorization();
3237
},
3338
onFailure: function(data) {
3439
if('console' in window) {
@@ -41,7 +46,7 @@
4146
apisSorter: "alpha"
4247
});
4348

44-
function addApiKeyAuthorization() {
49+
function getApiKeyAuthorization() {
4550
var key = $('#input_apiKey')[0].value;
4651

4752
if (key && key.trim() != "") {
@@ -50,9 +55,16 @@
5055
} else if (options.api_auth == 'bearer') {
5156
key = "Bearer " + key
5257
}
53-
window.swaggerUi.api.clientAuthorizations.add("key", new SwaggerClient.ApiKeyAuthorization(options.api_key_name, key, options.api_key_type));
58+
return new SwaggerClient.ApiKeyAuthorization(options.api_key_name, key, options.api_key_type);
59+
}
60+
}
61+
62+
function addApiKeyAuthorization() {
63+
var apiKeyAuthorization = getApiKeyAuthorization();
64+
if (apiKeyAuthorization) {
65+
window.swaggerUi.api.clientAuthorizations.add("key", apiKeyAuthorization);
5466
}
55-
}
67+
}
5668

5769
$('#input_apiKey').change(addApiKeyAuthorization);
5870

grape-swagger-rails.gemspec

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
1818

1919
spec.add_dependency 'railties', '>= 3.2.12'
2020

21-
spec.add_development_dependency 'bundler', '~> 1.3'
21+
spec.add_development_dependency 'bundler', '~> 1.15'
2222
spec.add_development_dependency 'rake'
2323
spec.add_development_dependency 'git'
2424
spec.add_development_dependency 'rspec-rails'
@@ -34,7 +34,8 @@ Gem::Specification.new do |spec|
3434
spec.add_development_dependency 'sprockets'
3535
spec.add_development_dependency 'rack', '~> 1.6'
3636
spec.add_development_dependency 'rack-cors'
37-
spec.add_development_dependency 'rubocop', '0.33.0'
37+
spec.add_development_dependency 'rubocop', '0.38.0'
3838
spec.add_development_dependency 'mime-types', '< 3.0'
3939
spec.add_development_dependency 'rack-no_animations'
40+
spec.add_development_dependency 'nokogiri', '< 1.7.0'
4041
end

lib/grape-swagger-rails/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module GrapeSwaggerRails
2-
VERSION = '0.3.0'
2+
VERSION = '0.3.0'.freeze
33
end

lib/tasks/swagger_ui.rake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ namespace :swagger_ui do
3636
'object-assign-pollyfill.js',
3737
'swagger-oauth.js',
3838
'base64.js'
39-
]
39+
].freeze
4040
javascript_files = Dir["#{root}/app/assets/javascripts/grape_swagger_rails/*.js"].map { |f|
4141
f.split('/').last
4242
} - ['application.js']
@@ -61,7 +61,7 @@ namespace :swagger_ui do
6161
CSS_FILES = [
6262
'reset.css',
6363
'screen.css'
64-
]
64+
].freeze
6565
css_files = Dir["#{root}/app/assets/stylesheets/grape_swagger_rails/*.css"].map { |f|
6666
f.split('/').last
6767
} - ['application.css']

spec/features/swagger_spec.rb

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919

2020
it 'evaluates config options correctly' do
2121
visit '/swagger'
22-
page_options_json = page.evaluate_script("$('html').data('swagger-options')").to_json
23-
expect(page_options_json).to eq(@options.marshal_dump.to_json)
22+
page_options = page.evaluate_script("$('html').data('swagger-options')").symbolize_keys
23+
expect(page_options).to eq(@options.marshal_dump)
2424
end
2525

2626
context '#headers' do
@@ -49,6 +49,21 @@
4949
expect(page).to have_css 'span.hljs-string', text: 'Another Value'
5050
end
5151
end
52+
context '#api_key_default_value' do
53+
before do
54+
GrapeSwaggerRails.options.api_auth = 'bearer'
55+
GrapeSwaggerRails.options.api_key_name = 'Authorization'
56+
GrapeSwaggerRails.options.api_key_type = 'header'
57+
GrapeSwaggerRails.options.api_key_default_value = 'token'
58+
visit '/swagger'
59+
end
60+
it 'adds an Authorization header' do
61+
headers = page.evaluate_script('swaggerUi.api.clientAuthorizations')['authz']
62+
last_header = headers.fetch("header_#{headers.length - 1}", {})
63+
expect(last_header.slice('name', 'value'))
64+
.to eq('name' => 'Authorization', 'value' => 'Bearer token')
65+
end
66+
end
5267
context '#api_auth:basic' do
5368
before do
5469
GrapeSwaggerRails.options.api_auth = 'basic'

0 commit comments

Comments
 (0)