g5_authenticatable_api 0.4.1 → 1.0.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.
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: