g5_authenticatable_api 0.4.1 → 1.0.0.pre.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rspec +1 -0
  4. data/.ruby-version +1 -1
  5. data/.travis.yml +29 -8
  6. data/Appraisals +17 -0
  7. data/CHANGELOG.md +9 -0
  8. data/Gemfile +13 -14
  9. data/README.md +11 -10
  10. data/Rakefile +21 -1
  11. data/g5_authenticatable_api.gemspec +1 -1
  12. data/gemfiles/rails_4.1.gemfile +28 -0
  13. data/gemfiles/rails_4.2.gemfile +28 -0
  14. data/gemfiles/rails_5.0.gemfile +28 -0
  15. data/gemfiles/rails_5.1.gemfile +28 -0
  16. data/lib/g5_authenticatable_api/helpers/grape.rb +16 -5
  17. data/lib/g5_authenticatable_api/helpers/rails.rb +23 -6
  18. data/lib/g5_authenticatable_api/railtie.rb +3 -0
  19. data/lib/g5_authenticatable_api/services/token_info.rb +26 -10
  20. data/lib/g5_authenticatable_api/services/token_validator.rb +23 -20
  21. data/lib/g5_authenticatable_api/services/user_fetcher.rb +3 -0
  22. data/lib/g5_authenticatable_api/version.rb +3 -1
  23. data/lib/g5_authenticatable_api.rb +3 -0
  24. data/spec/dummy/app/controllers/rails_api/articles_controller.rb +1 -1
  25. data/spec/dummy/config/environments/test.rb +18 -2
  26. data/spec/dummy/config/initializers/rails_compatibility.rb +10 -0
  27. data/spec/dummy/db/migrate/20140217124048_devise_create_users.rb +4 -2
  28. data/spec/dummy/db/migrate/20140223194521_create_articles.rb +3 -1
  29. data/spec/dummy/db/schema.rb +11 -13
  30. data/spec/factories/user.rb +2 -0
  31. data/spec/lib/g5_authenticatable_api/helpers/grape_spec.rb +36 -28
  32. data/spec/lib/g5_authenticatable_api/helpers/rails_spec.rb +39 -33
  33. data/spec/lib/g5_authenticatable_api/services/token_info_spec.rb +25 -19
  34. data/spec/lib/g5_authenticatable_api/services/token_validator_spec.rb +20 -12
  35. data/spec/lib/g5_authenticatable_api/services/user_fetcher_spec.rb +5 -3
  36. data/spec/lib/g5_authenticatable_api/version_spec.rb +4 -2
  37. data/spec/rails_helper.rb +39 -0
  38. data/spec/requests/grape_api_spec.rb +6 -4
  39. data/spec/requests/rails_api_spec.rb +5 -3
  40. data/spec/spec_helper.rb +18 -38
  41. data/spec/support/controller_test_helpers.rb +26 -0
  42. data/spec/support/factory_girl.rb +2 -0
  43. data/spec/support/shared_contexts/current_auth_user.rb +8 -6
  44. data/spec/support/shared_contexts/invalid_access_token.rb +12 -10
  45. data/spec/support/shared_contexts/valid_access_token.rb +9 -7
  46. data/spec/support/shared_examples/auth_user.rb +3 -1
  47. data/spec/support/shared_examples/token_authenticatable_api.rb +9 -7
  48. data/spec/support/shared_examples/token_validation.rb +14 -8
  49. data/spec/support/shared_examples/warden_authenticatable_api.rb +8 -7
  50. data/spec/support/warden.rb +2 -0
  51. metadata +20 -10
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ ENV['RAILS_ENV'] ||= 'test'
6
+ require File.expand_path('../dummy/config/environment', __FILE__)
7
+
8
+ require 'rspec/rails'
9
+ require 'capybara/rspec'
10
+ require 'webmock/rspec'
11
+
12
+ Rails.backtrace_cleaner.remove_silencers!
13
+
14
+ # Requires supporting ruby files with custom matchers and macros, etc,
15
+ # in spec/support/ and its subdirectories.
16
+ Dir[File.expand_path('../support/**/*.rb', __FILE__)].each { |f| require f }
17
+
18
+ RSpec.configure do |config|
19
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
20
+ # examples within a transaction, remove the following line or assign false
21
+ # instead of true.
22
+ config.use_transactional_fixtures = true
23
+
24
+ # If true, the base class of anonymous controllers will be inferred
25
+ # automatically. This will be the default behavior in future versions of
26
+ # rspec-rails.
27
+ config.infer_base_class_for_anonymous_controllers = false
28
+
29
+ config.after(:suite) { WebMock.disable! }
30
+
31
+ config.infer_spec_type_from_file_location!
32
+ end
33
+
34
+ Shoulda::Matchers.configure do |config|
35
+ config.integrate do |with|
36
+ with.test_framework :rspec
37
+ with.library :rails
38
+ end
39
+ end
@@ -1,19 +1,21 @@
1
- require 'spec_helper'
1
+ # frozen_string_literal: true
2
2
 
3
- describe 'a secure Grape API endpoint' do
3
+ require 'rails_helper'
4
+
5
+ RSpec.describe 'a secure Grape API endpoint' do
4
6
  let(:endpoint) { '/grape_api/hello' }
5
7
  let(:params) {}
6
8
  let(:headers) {}
7
9
 
8
10
  describe 'GET request' do
9
- subject(:api_call) { get endpoint, params, headers }
11
+ subject(:api_call) { safe_get endpoint, params, headers }
10
12
 
11
13
  it_should_behave_like 'a warden authenticatable api'
12
14
  it_should_behave_like 'a token authenticatable api'
13
15
  end
14
16
 
15
17
  describe 'POST request' do
16
- subject(:api_call) { post endpoint, params, headers }
18
+ subject(:api_call) { safe_post endpoint, params, headers }
17
19
 
18
20
  it_should_behave_like 'a warden authenticatable api'
19
21
  it_should_behave_like 'a token authenticatable api'
@@ -1,11 +1,13 @@
1
- require 'spec_helper'
1
+ # frozen_string_literal: true
2
2
 
3
- describe 'A Secure Rails API endpoint' do
3
+ require 'rails_helper'
4
+
5
+ RSpec.describe 'A Secure Rails API endpoint' do
4
6
  let(:params) {}
5
7
  let(:headers) {}
6
8
 
7
9
  describe 'GET request' do
8
- subject(:api_call) { get '/rails_api/articles', params, headers }
10
+ subject(:api_call) { safe_get '/rails_api/articles', params, headers }
9
11
 
10
12
  it_should_behave_like 'a warden authenticatable api'
11
13
  it_should_behave_like 'a token authenticatable api'
data/spec/spec_helper.rb CHANGED
@@ -1,49 +1,29 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # MUST happen before any other code is loaded
2
4
  require 'simplecov'
3
- SimpleCov.start 'test_frameworks'
5
+ SimpleCov.start 'rails'
4
6
 
5
- require 'codeclimate-test-reporter'
6
- CodeClimate::TestReporter.start
7
+ require 'pry'
7
8
 
8
- ENV["RAILS_ENV"] ||= 'test'
9
- require File.expand_path("../dummy/config/environment", __FILE__)
9
+ RSpec.configure do |config|
10
+ config.expect_with :rspec do |expectations|
11
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
12
+ end
10
13
 
11
- require 'rspec/rails'
12
- require 'rspec/http'
13
- require 'capybara/rspec'
14
- require 'webmock/rspec'
14
+ config.mock_with :rspec do |mocks|
15
+ mocks.verify_partial_doubles = true
16
+ end
15
17
 
16
- Rails.backtrace_cleaner.remove_silencers!
18
+ config.shared_context_metadata_behavior = :apply_to_host_groups
17
19
 
18
- # Requires supporting ruby files with custom matchers and macros, etc,
19
- # in spec/support/ and its subdirectories.
20
- Dir[File.expand_path('../support/**/*.rb', __FILE__)].each { |f| require f }
20
+ config.filter_run_when_matching :focus
21
+
22
+ config.disable_monkey_patching!
23
+
24
+ config.default_formatter = 'doc' if config.files_to_run.one?
21
25
 
22
- RSpec.configure do |config|
23
- # ## Mock Framework
24
- #
25
- # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
26
- #
27
- # config.mock_with :mocha
28
- # config.mock_with :flexmock
29
- # config.mock_with :rr
30
- config.mock_with :rspec
31
-
32
- # If you're not using ActiveRecord, or you'd prefer not to run each of your
33
- # examples within a transaction, remove the following line or assign false
34
- # instead of true.
35
- config.use_transactional_fixtures = true
36
-
37
- # If true, the base class of anonymous controllers will be inferred
38
- # automatically. This will be the default behavior in future versions of
39
- # rspec-rails.
40
- config.infer_base_class_for_anonymous_controllers = false
41
-
42
- # Run specs in random order to surface order dependencies. If you find an
43
- # order dependency and want to debug it, you can fix the order by providing
44
- # the seed, which is printed after each run.
45
- # --seed 1234
46
26
  config.order = 'random'
47
27
 
48
- config.after(:suite) { WebMock.disable! }
28
+ Kernel.srand config.seed
49
29
  end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ControllerTestHelpers
4
+ def safe_get(endpoint, params = nil, headers = nil)
5
+ safe_request(:get, endpoint, params, headers)
6
+ end
7
+
8
+ def safe_post(endpoint, params = nil, headers = nil)
9
+ safe_request(:post, endpoint, params, headers)
10
+ end
11
+
12
+ def safe_request(method_name, endpoint, params = nil, headers = nil)
13
+ if Rails.version.starts_with?('4')
14
+ send(method_name, endpoint, params, headers)
15
+ else
16
+ options = { params: params }
17
+ options[:headers] = headers if headers
18
+ send(method_name, endpoint, **options)
19
+ end
20
+ end
21
+ end
22
+
23
+ RSpec.configure do |config|
24
+ config.include ControllerTestHelpers, type: :controller
25
+ config.include ControllerTestHelpers, type: :request
26
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'factory_girl_rails'
2
4
 
3
5
  RSpec.configure do |config|
@@ -1,10 +1,12 @@
1
- shared_context 'current auth user' do
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_context 'current auth user' do
2
4
  before do
3
- stub_request(:get, 'auth.g5search.com/v1/me').
4
- with(headers: {'Authorization'=>"Bearer #{token_value}"}).
5
- to_return(status: 200,
6
- body: raw_user_info.to_json,
7
- headers: {'Content-Type' => 'application/json'})
5
+ stub_request(:get, 'auth.g5search.com/v1/me')
6
+ .with(headers: { 'Authorization' => "Bearer #{token_value}" })
7
+ .to_return(status: 200,
8
+ body: raw_user_info.to_json,
9
+ headers: { 'Content-Type' => 'application/json' })
8
10
  end
9
11
 
10
12
  let(:raw_user_info) do
@@ -1,21 +1,23 @@
1
- shared_context 'OAuth2 error' do
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_context 'OAuth2 error' do
2
4
  before do
3
- stub_request(:get, 'auth.g5search.com/oauth/token/info').
4
- with(headers: {'Authorization'=>"Bearer #{token_value}"}).
5
- to_return(status: 401,
6
- headers: {'Content-Type' => 'application/json; charset=utf-8',
7
- 'Cache-Control' => 'no-cache'},
8
- body: parsed_error.to_json)
5
+ stub_request(:get, 'auth.g5search.com/oauth/token/info')
6
+ .with(headers: { 'Authorization' => "Bearer #{token_value}" })
7
+ .to_return(status: 401,
8
+ headers: { 'Content-Type' => 'application/json; charset=utf-8',
9
+ 'Cache-Control' => 'no-cache' },
10
+ body: parsed_error.to_json)
9
11
  end
10
12
 
11
13
  let(:parsed_error) { '' }
12
14
  end
13
15
 
14
- shared_context 'invalid access token' do
16
+ RSpec.shared_context 'invalid access token' do
15
17
  include_context 'OAuth2 error' do
16
18
  let(:parsed_error) do
17
- {'error' => error_code,
18
- 'error_description' => error_description}
19
+ { 'error' => error_code,
20
+ 'error_description' => error_description }
19
21
  end
20
22
 
21
23
  let(:error_code) { 'invalid_token' }
@@ -1,10 +1,12 @@
1
- shared_context 'valid access token' do
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_context 'valid access token' do
2
4
  before do
3
- stub_request(:get, 'auth.g5search.com/oauth/token/info').
4
- with(headers: {'Authorization'=>"Bearer #{token_value}"}).
5
- to_return(status: 200,
6
- body: raw_token_info.to_json,
7
- headers: {'Content-Type' => 'application/json'})
5
+ stub_request(:get, 'auth.g5search.com/oauth/token/info')
6
+ .with(headers: { 'Authorization' => "Bearer #{token_value}" })
7
+ .to_return(status: 200,
8
+ body: raw_token_info.to_json,
9
+ headers: { 'Content-Type' => 'application/json' })
8
10
  end
9
11
 
10
12
  let(:raw_token_info) do
@@ -12,7 +14,7 @@ shared_context 'valid access token' do
12
14
  'resource_owner_id' => '42',
13
15
  'scopes' => [],
14
16
  'expires_in_seconds' => 120,
15
- 'application' => {'uid' => 'abcdefg112358'}
17
+ 'application' => { 'uid' => 'abcdefg112358' }
16
18
  }
17
19
  end
18
20
  end
@@ -1,4 +1,6 @@
1
- shared_examples_for 'an auth user' do
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_examples_for 'an auth user' do
2
4
  it 'has the correct id' do
3
5
  expect(user.id).to eq(raw_user_info['id'])
4
6
  end
@@ -1,14 +1,16 @@
1
- shared_examples_for 'a token authenticatable api' do
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_examples_for 'a token authenticatable api' do
2
4
  let(:token_value) { 'abc123' }
3
5
 
4
6
  context 'with authorization header' do
5
- let(:headers) { {'Authorization' => "Bearer #{token_value}"} }
7
+ let(:headers) { { 'Authorization' => "Bearer #{token_value}" } }
6
8
 
7
9
  include_examples 'token validation'
8
10
  end
9
11
 
10
12
  context 'with access token parameter' do
11
- let(:params) { {'access_token' => token_value} }
13
+ let(:params) { { 'access_token' => token_value } }
12
14
 
13
15
  include_examples 'token validation'
14
16
  end
@@ -17,11 +19,11 @@ shared_examples_for 'a token authenticatable api' do
17
19
  before { subject }
18
20
 
19
21
  it 'should be unauthorized' do
20
- expect(response).to be_http_unauthorized
22
+ expect(response.status).to eq(401)
21
23
  end
22
24
 
23
25
  it 'should return an authenticate header without details' do
24
- expect(response.headers).to include('WWW-Authenticate' => 'Bearer')
26
+ expect(response.headers['WWW-Authenticate']).to eq('Bearer')
25
27
  end
26
28
  end
27
29
 
@@ -39,11 +41,11 @@ shared_examples_for 'a token authenticatable api' do
39
41
  before { subject }
40
42
 
41
43
  it 'should be unauthorized' do
42
- expect(response).to be_http_unauthorized
44
+ expect(response.status).to eq(401)
43
45
  end
44
46
 
45
47
  it 'should return an authenticate header without details' do
46
- expect(response.headers).to include('WWW-Authenticate' => 'Bearer')
48
+ expect(response.headers['WWW-Authenticate']).to eq('Bearer')
47
49
  end
48
50
  end
49
51
  end
@@ -1,4 +1,6 @@
1
- shared_examples_for 'token validation' do
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_examples_for 'token validation' do
2
4
  context 'when token is valid' do
3
5
  include_context 'valid access token'
4
6
 
@@ -9,8 +11,9 @@ shared_examples_for 'token validation' do
9
11
  end
10
12
 
11
13
  it 'should validate the access token against the auth server' do
12
- expect(a_request(:get, 'auth.g5search.com/oauth/token/info').
13
- with(headers: {'Authorization' => "Bearer #{token_value}"})).to have_been_made
14
+ expect(a_request(:get, 'auth.g5search.com/oauth/token/info')
15
+ .with(headers: { 'Authorization' => "Bearer #{token_value}" }))
16
+ .to have_been_made
14
17
  end
15
18
  end
16
19
 
@@ -20,7 +23,7 @@ shared_examples_for 'token validation' do
20
23
  before { subject }
21
24
 
22
25
  it 'should be unauthorized' do
23
- expect(response).to be_http_unauthorized
26
+ expect(response.status).to eq(401)
24
27
  end
25
28
 
26
29
  it 'should return an authenticate header' do
@@ -28,11 +31,13 @@ shared_examples_for 'token validation' do
28
31
  end
29
32
 
30
33
  it 'should return the authentication error' do
31
- expect(response.headers['WWW-Authenticate']).to match("error=\"#{error_code}\"")
34
+ expect(response.headers['WWW-Authenticate'])
35
+ .to match("error=\"#{error_code}\"")
32
36
  end
33
37
 
34
38
  it 'should return the authentication error description' do
35
- expect(response.headers['WWW-Authenticate']).to match("error_description=\"#{error_description}\"")
39
+ expect(response.headers['WWW-Authenticate'])
40
+ .to match("error_description=\"#{error_description}\"")
36
41
  end
37
42
  end
38
43
 
@@ -42,7 +47,7 @@ shared_examples_for 'token validation' do
42
47
  before { subject }
43
48
 
44
49
  it 'should be unauthorized' do
45
- expect(response).to be_http_unauthorized
50
+ expect(response.status).to eq(401)
46
51
  end
47
52
 
48
53
  it 'should return an authenticate header' do
@@ -50,7 +55,8 @@ shared_examples_for 'token validation' do
50
55
  end
51
56
 
52
57
  it 'should return the default authentication error code' do
53
- expect(response.headers['WWW-Authenticate']).to match('error="invalid_request"')
58
+ expect(response.headers['WWW-Authenticate'])
59
+ .to match('error="invalid_request"')
54
60
  end
55
61
  end
56
62
  end
@@ -1,6 +1,6 @@
1
- require 'spec_helper'
1
+ # frozen_string_literal: true
2
2
 
3
- shared_examples_for 'a warden authenticatable api' do
3
+ RSpec.shared_examples_for 'a warden authenticatable api' do
4
4
  context 'when user is authenticated' do
5
5
  let(:user) { create(:user) }
6
6
  let(:token_value) { user.g5_access_token }
@@ -27,23 +27,24 @@ shared_examples_for 'a warden authenticatable api' do
27
27
  end
28
28
 
29
29
  it 'should not validate the token against the auth server' do
30
- expect(a_request(:get, 'auth.g5search.com/oauth/token/info')).to_not have_been_made
30
+ expect(a_request(:get, 'auth.g5search.com/oauth/token/info'))
31
+ .to_not have_been_made
31
32
  end
32
33
  end
33
34
  end
34
35
 
35
36
  context 'when user is not authenticated' do
36
37
  before do
37
- logout
38
- subject
38
+ logout
39
+ subject
39
40
  end
40
41
 
41
42
  it 'should be unauthorized' do
42
- expect(response).to be_http_unauthorized
43
+ expect(response.status).to eq(401)
43
44
  end
44
45
 
45
46
  it 'should return an authenticate header without details' do
46
- expect(response.headers).to include('WWW-Authenticate' => 'Bearer')
47
+ expect(response.headers['WWW-Authenticate']).to eq('Bearer')
47
48
  end
48
49
  end
49
50
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.configure do |config|
2
4
  config.include Warden::Test::Helpers, type: :request
3
5
  config.after(type: :request) { Warden.test_reset! }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: g5_authenticatable_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 1.0.0.pre.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maeve Revels
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-01 00:00:00.000000000 Z
11
+ date: 2017-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: g5_authentication_client
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: '0.5'
33
+ version: 1.0.0.pre.4
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: '0.5'
40
+ version: 1.0.0.pre.4
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: activesupport
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -63,12 +63,17 @@ files:
63
63
  - ".rspec"
64
64
  - ".ruby-version"
65
65
  - ".travis.yml"
66
+ - Appraisals
66
67
  - CHANGELOG.md
67
68
  - Gemfile
68
69
  - LICENSE.txt
69
70
  - README.md
70
71
  - Rakefile
71
72
  - g5_authenticatable_api.gemspec
73
+ - gemfiles/rails_4.1.gemfile
74
+ - gemfiles/rails_4.2.gemfile
75
+ - gemfiles/rails_5.0.gemfile
76
+ - gemfiles/rails_5.1.gemfile
72
77
  - lib/g5_authenticatable_api.rb
73
78
  - lib/g5_authenticatable_api/helpers/grape.rb
74
79
  - lib/g5_authenticatable_api/helpers/rails.rb
@@ -113,6 +118,7 @@ files:
113
118
  - spec/dummy/config/initializers/filter_parameter_logging.rb
114
119
  - spec/dummy/config/initializers/inflections.rb
115
120
  - spec/dummy/config/initializers/mime_types.rb
121
+ - spec/dummy/config/initializers/rails_compatibility.rb
116
122
  - spec/dummy/config/initializers/secret_token.rb
117
123
  - spec/dummy/config/initializers/session_store.rb
118
124
  - spec/dummy/config/initializers/wrap_parameters.rb
@@ -140,9 +146,11 @@ files:
140
146
  - spec/lib/g5_authenticatable_api/services/token_validator_spec.rb
141
147
  - spec/lib/g5_authenticatable_api/services/user_fetcher_spec.rb
142
148
  - spec/lib/g5_authenticatable_api/version_spec.rb
149
+ - spec/rails_helper.rb
143
150
  - spec/requests/grape_api_spec.rb
144
151
  - spec/requests/rails_api_spec.rb
145
152
  - spec/spec_helper.rb
153
+ - spec/support/controller_test_helpers.rb
146
154
  - spec/support/factory_girl.rb
147
155
  - spec/support/shared_contexts/current_auth_user.rb
148
156
  - spec/support/shared_contexts/invalid_access_token.rb
@@ -167,12 +175,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
167
175
  version: '0'
168
176
  required_rubygems_version: !ruby/object:Gem::Requirement
169
177
  requirements:
170
- - - ">="
178
+ - - ">"
171
179
  - !ruby/object:Gem::Version
172
- version: '0'
180
+ version: 1.3.1
173
181
  requirements: []
174
182
  rubyforge_project:
175
- rubygems_version: 2.2.2
183
+ rubygems_version: 2.5.2
176
184
  signing_key:
177
185
  specification_version: 4
178
186
  summary: Helpers for securing APIs with G5
@@ -213,6 +221,7 @@ test_files:
213
221
  - spec/dummy/config/initializers/filter_parameter_logging.rb
214
222
  - spec/dummy/config/initializers/inflections.rb
215
223
  - spec/dummy/config/initializers/mime_types.rb
224
+ - spec/dummy/config/initializers/rails_compatibility.rb
216
225
  - spec/dummy/config/initializers/secret_token.rb
217
226
  - spec/dummy/config/initializers/session_store.rb
218
227
  - spec/dummy/config/initializers/wrap_parameters.rb
@@ -240,9 +249,11 @@ test_files:
240
249
  - spec/lib/g5_authenticatable_api/services/token_validator_spec.rb
241
250
  - spec/lib/g5_authenticatable_api/services/user_fetcher_spec.rb
242
251
  - spec/lib/g5_authenticatable_api/version_spec.rb
252
+ - spec/rails_helper.rb
243
253
  - spec/requests/grape_api_spec.rb
244
254
  - spec/requests/rails_api_spec.rb
245
255
  - spec/spec_helper.rb
256
+ - spec/support/controller_test_helpers.rb
246
257
  - spec/support/factory_girl.rb
247
258
  - spec/support/shared_contexts/current_auth_user.rb
248
259
  - spec/support/shared_contexts/invalid_access_token.rb
@@ -252,4 +263,3 @@ test_files:
252
263
  - spec/support/shared_examples/token_validation.rb
253
264
  - spec/support/shared_examples/warden_authenticatable_api.rb
254
265
  - spec/support/warden.rb
255
- has_rdoc: