g5_authenticatable_api 0.2.0
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.
- checksums.yaml +7 -0
- data/.gitignore +24 -0
- data/.rspec +2 -0
- data/CHANGELOG.md +18 -0
- data/Gemfile +38 -0
- data/LICENSE.txt +22 -0
- data/README.md +286 -0
- data/Rakefile +1 -0
- data/circle.yml +4 -0
- data/g5_authenticatable_api.gemspec +23 -0
- data/lib/g5_authenticatable_api/helpers/grape.rb +27 -0
- data/lib/g5_authenticatable_api/helpers/rails.rb +26 -0
- data/lib/g5_authenticatable_api/railtie.rb +11 -0
- data/lib/g5_authenticatable_api/token_validator.rb +65 -0
- data/lib/g5_authenticatable_api/version.rb +3 -0
- data/lib/g5_authenticatable_api.rb +9 -0
- data/spec/dummy/README.rdoc +28 -0
- data/spec/dummy/Rakefile +6 -0
- data/spec/dummy/app/api/hello_api.rb +13 -0
- data/spec/dummy/app/assets/images/.keep +0 -0
- data/spec/dummy/app/assets/javascripts/application.js +16 -0
- data/spec/dummy/app/assets/javascripts/articles.js +2 -0
- data/spec/dummy/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy/app/assets/stylesheets/articles.css +4 -0
- data/spec/dummy/app/controllers/application_controller.rb +5 -0
- data/spec/dummy/app/controllers/concerns/.keep +0 -0
- data/spec/dummy/app/controllers/rails_api/articles_controller.rb +11 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/helpers/articles_helper.rb +2 -0
- data/spec/dummy/app/mailers/.keep +0 -0
- data/spec/dummy/app/models/.keep +0 -0
- data/spec/dummy/app/models/article.rb +2 -0
- data/spec/dummy/app/models/concerns/.keep +0 -0
- data/spec/dummy/app/models/user.rb +3 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/config/application.rb +30 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml.ci +6 -0
- data/spec/dummy/config/database.yml.sample +50 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +29 -0
- data/spec/dummy/config/environments/production.rb +80 -0
- data/spec/dummy/config/environments/test.rb +36 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/devise.rb +254 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +12 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/devise.en.yml +59 -0
- data/spec/dummy/config/locales/en.yml +23 -0
- data/spec/dummy/config/routes.rb +63 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/db/migrate/20140217124048_devise_create_users.rb +15 -0
- data/spec/dummy/db/migrate/20140223194521_create_articles.rb +11 -0
- data/spec/dummy/db/schema.rb +39 -0
- data/spec/dummy/db/seeds.rb +7 -0
- data/spec/dummy/lib/assets/.keep +0 -0
- data/spec/dummy/lib/tasks/.keep +0 -0
- data/spec/dummy/log/.keep +0 -0
- data/spec/dummy/public/404.html +58 -0
- data/spec/dummy/public/422.html +58 -0
- data/spec/dummy/public/500.html +57 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/public/robots.txt +5 -0
- data/spec/dummy/vendor/assets/javascripts/.keep +0 -0
- data/spec/dummy/vendor/assets/stylesheets/.keep +0 -0
- data/spec/factories/user.rb +8 -0
- data/spec/lib/g5_authenticatable_api/token_validator_spec.rb +199 -0
- data/spec/lib/g5_authenticatable_api/version_spec.rb +7 -0
- data/spec/requests/grape_api_spec.rb +21 -0
- data/spec/requests/rails_api_spec.rb +13 -0
- data/spec/spec_helper.rb +49 -0
- data/spec/support/factory_girl.rb +5 -0
- data/spec/support/shared_contexts/invalid_access_token.rb +24 -0
- data/spec/support/shared_contexts/valid_access_token.rb +7 -0
- data/spec/support/shared_examples/token_authenticatable_api.rb +106 -0
- data/spec/support/shared_examples/warden_authenticatable_api.rb +31 -0
- data/spec/support/warden.rb +4 -0
- metadata +223 -0
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# MUST happen before any other code is loaded
|
2
|
+
require 'simplecov'
|
3
|
+
SimpleCov.start 'test_frameworks'
|
4
|
+
|
5
|
+
require 'codeclimate-test-reporter'
|
6
|
+
CodeClimate::TestReporter.start
|
7
|
+
|
8
|
+
ENV["RAILS_ENV"] ||= 'test'
|
9
|
+
require File.expand_path("../dummy/config/environment", __FILE__)
|
10
|
+
|
11
|
+
require 'rspec/rails'
|
12
|
+
require 'rspec/http'
|
13
|
+
require 'capybara/rspec'
|
14
|
+
require 'webmock/rspec'
|
15
|
+
|
16
|
+
Rails.backtrace_cleaner.remove_silencers!
|
17
|
+
|
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 }
|
21
|
+
|
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
|
+
config.order = 'random'
|
47
|
+
|
48
|
+
config.after(:suite) { WebMock.disable! }
|
49
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
shared_context 'OAuth2 error' do
|
2
|
+
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)
|
9
|
+
end
|
10
|
+
|
11
|
+
let(:parsed_error) { '' }
|
12
|
+
end
|
13
|
+
|
14
|
+
shared_context 'invalid access token' do
|
15
|
+
include_context 'OAuth2 error' do
|
16
|
+
let(:parsed_error) do
|
17
|
+
{'error' => error_code,
|
18
|
+
'error_description' => error_description}
|
19
|
+
end
|
20
|
+
|
21
|
+
let(:error_code) { 'invalid_token' }
|
22
|
+
let(:error_description) { 'The access token expired' }
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,106 @@
|
|
1
|
+
shared_examples_for 'token validation' do
|
2
|
+
context 'when token is valid' do
|
3
|
+
include_context 'valid access token'
|
4
|
+
|
5
|
+
before { subject }
|
6
|
+
|
7
|
+
it 'should be successful' do
|
8
|
+
expect(response).to be_success
|
9
|
+
end
|
10
|
+
|
11
|
+
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
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context 'when token is invalid' do
|
18
|
+
include_context 'invalid access token'
|
19
|
+
|
20
|
+
before { subject }
|
21
|
+
|
22
|
+
it 'should be unauthorized' do
|
23
|
+
expect(response).to be_http_unauthorized
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should return an authenticate header' do
|
27
|
+
expect(response.headers).to have_key('WWW-Authenticate')
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should return the authentication error' do
|
31
|
+
expect(response.headers['WWW-Authenticate']).to match("error=\"#{error_code}\"")
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'should return the authentication error description' do
|
35
|
+
expect(response.headers['WWW-Authenticate']).to match("error_description=\"#{error_description}\"")
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context 'when some other oauth error occurs' do
|
40
|
+
include_context 'OAuth2 error'
|
41
|
+
|
42
|
+
before { subject }
|
43
|
+
|
44
|
+
it 'should be unauthorized' do
|
45
|
+
expect(response).to be_http_unauthorized
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'should return an authenticate header' do
|
49
|
+
expect(response.headers).to have_key('WWW-Authenticate')
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'should return the default authentication error code' do
|
53
|
+
expect(response.headers['WWW-Authenticate']).to match('error="invalid_request"')
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
shared_examples_for 'a token authenticatable api' do
|
59
|
+
let(:token_value) { 'abc123' }
|
60
|
+
|
61
|
+
context 'with authorization header' do
|
62
|
+
let(:headers) { {'Authorization' => "Bearer #{token_value}"} }
|
63
|
+
|
64
|
+
include_examples 'token validation'
|
65
|
+
end
|
66
|
+
|
67
|
+
context 'with access token parameter' do
|
68
|
+
let(:params) { {'access_token' => token_value} }
|
69
|
+
|
70
|
+
include_examples 'token validation'
|
71
|
+
end
|
72
|
+
|
73
|
+
context 'without authentication information' do
|
74
|
+
before { subject }
|
75
|
+
|
76
|
+
it 'should be unauthorized' do
|
77
|
+
expect(response).to be_http_unauthorized
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'should return an authenticate header without details' do
|
81
|
+
expect(response.headers).to include('WWW-Authenticate' => 'Bearer')
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
context 'with environment variables for password credentials' do
|
86
|
+
before do
|
87
|
+
ENV['G5_AUTH_USERNAME'] = 'my.user@test.host'
|
88
|
+
ENV['G5_AUTH_PASSWORD'] = 'my_secret'
|
89
|
+
end
|
90
|
+
|
91
|
+
after do
|
92
|
+
ENV['G5_AUTH_USERNAME'] = nil
|
93
|
+
ENV['G5_AUTH_PASSWORD'] = nil
|
94
|
+
end
|
95
|
+
|
96
|
+
before { subject }
|
97
|
+
|
98
|
+
it 'should be unauthorized' do
|
99
|
+
expect(response).to be_http_unauthorized
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'should return an authenticate header without details' do
|
103
|
+
expect(response.headers).to include('WWW-Authenticate' => 'Bearer')
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
shared_examples_for 'a warden authenticatable api' do
|
4
|
+
context 'when user is authenticated' do
|
5
|
+
let(:user) { create(:user) }
|
6
|
+
|
7
|
+
before do
|
8
|
+
login_as(user, scope: :user)
|
9
|
+
subject
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'should be successful' do
|
13
|
+
expect(response).to be_success
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context 'when user is not authenticated' do
|
18
|
+
before do
|
19
|
+
logout
|
20
|
+
subject
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should be unauthorized' do
|
24
|
+
expect(response).to be_http_unauthorized
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should return an authenticate header without details' do
|
28
|
+
expect(response.headers).to include('WWW-Authenticate' => 'Bearer')
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
metadata
ADDED
@@ -0,0 +1,223 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: g5_authenticatable_api
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Maeve Revels
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-03-12 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rack
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: g5_authentication_client
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.2'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.2'
|
41
|
+
description: Helpers for securing APIs with G5
|
42
|
+
email:
|
43
|
+
- maeve.revels@getg5.com
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- ".gitignore"
|
49
|
+
- ".rspec"
|
50
|
+
- CHANGELOG.md
|
51
|
+
- Gemfile
|
52
|
+
- LICENSE.txt
|
53
|
+
- README.md
|
54
|
+
- Rakefile
|
55
|
+
- circle.yml
|
56
|
+
- g5_authenticatable_api.gemspec
|
57
|
+
- lib/g5_authenticatable_api.rb
|
58
|
+
- lib/g5_authenticatable_api/helpers/grape.rb
|
59
|
+
- lib/g5_authenticatable_api/helpers/rails.rb
|
60
|
+
- lib/g5_authenticatable_api/railtie.rb
|
61
|
+
- lib/g5_authenticatable_api/token_validator.rb
|
62
|
+
- lib/g5_authenticatable_api/version.rb
|
63
|
+
- spec/dummy/README.rdoc
|
64
|
+
- spec/dummy/Rakefile
|
65
|
+
- spec/dummy/app/api/hello_api.rb
|
66
|
+
- spec/dummy/app/assets/images/.keep
|
67
|
+
- spec/dummy/app/assets/javascripts/application.js
|
68
|
+
- spec/dummy/app/assets/javascripts/articles.js
|
69
|
+
- spec/dummy/app/assets/stylesheets/application.css
|
70
|
+
- spec/dummy/app/assets/stylesheets/articles.css
|
71
|
+
- spec/dummy/app/controllers/application_controller.rb
|
72
|
+
- spec/dummy/app/controllers/concerns/.keep
|
73
|
+
- spec/dummy/app/controllers/rails_api/articles_controller.rb
|
74
|
+
- spec/dummy/app/helpers/application_helper.rb
|
75
|
+
- spec/dummy/app/helpers/articles_helper.rb
|
76
|
+
- spec/dummy/app/mailers/.keep
|
77
|
+
- spec/dummy/app/models/.keep
|
78
|
+
- spec/dummy/app/models/article.rb
|
79
|
+
- spec/dummy/app/models/concerns/.keep
|
80
|
+
- spec/dummy/app/models/user.rb
|
81
|
+
- spec/dummy/app/views/layouts/application.html.erb
|
82
|
+
- spec/dummy/bin/bundle
|
83
|
+
- spec/dummy/bin/rails
|
84
|
+
- spec/dummy/bin/rake
|
85
|
+
- spec/dummy/config.ru
|
86
|
+
- spec/dummy/config/application.rb
|
87
|
+
- spec/dummy/config/boot.rb
|
88
|
+
- spec/dummy/config/database.yml.ci
|
89
|
+
- spec/dummy/config/database.yml.sample
|
90
|
+
- spec/dummy/config/environment.rb
|
91
|
+
- spec/dummy/config/environments/development.rb
|
92
|
+
- spec/dummy/config/environments/production.rb
|
93
|
+
- spec/dummy/config/environments/test.rb
|
94
|
+
- spec/dummy/config/initializers/backtrace_silencers.rb
|
95
|
+
- spec/dummy/config/initializers/devise.rb
|
96
|
+
- spec/dummy/config/initializers/filter_parameter_logging.rb
|
97
|
+
- spec/dummy/config/initializers/inflections.rb
|
98
|
+
- spec/dummy/config/initializers/mime_types.rb
|
99
|
+
- spec/dummy/config/initializers/secret_token.rb
|
100
|
+
- spec/dummy/config/initializers/session_store.rb
|
101
|
+
- spec/dummy/config/initializers/wrap_parameters.rb
|
102
|
+
- spec/dummy/config/locales/devise.en.yml
|
103
|
+
- spec/dummy/config/locales/en.yml
|
104
|
+
- spec/dummy/config/routes.rb
|
105
|
+
- spec/dummy/db/migrate/20140217124048_devise_create_users.rb
|
106
|
+
- spec/dummy/db/migrate/20140223194521_create_articles.rb
|
107
|
+
- spec/dummy/db/schema.rb
|
108
|
+
- spec/dummy/db/seeds.rb
|
109
|
+
- spec/dummy/lib/assets/.keep
|
110
|
+
- spec/dummy/lib/tasks/.keep
|
111
|
+
- spec/dummy/log/.keep
|
112
|
+
- spec/dummy/public/404.html
|
113
|
+
- spec/dummy/public/422.html
|
114
|
+
- spec/dummy/public/500.html
|
115
|
+
- spec/dummy/public/favicon.ico
|
116
|
+
- spec/dummy/public/robots.txt
|
117
|
+
- spec/dummy/vendor/assets/javascripts/.keep
|
118
|
+
- spec/dummy/vendor/assets/stylesheets/.keep
|
119
|
+
- spec/factories/user.rb
|
120
|
+
- spec/lib/g5_authenticatable_api/token_validator_spec.rb
|
121
|
+
- spec/lib/g5_authenticatable_api/version_spec.rb
|
122
|
+
- spec/requests/grape_api_spec.rb
|
123
|
+
- spec/requests/rails_api_spec.rb
|
124
|
+
- spec/spec_helper.rb
|
125
|
+
- spec/support/factory_girl.rb
|
126
|
+
- spec/support/shared_contexts/invalid_access_token.rb
|
127
|
+
- spec/support/shared_contexts/valid_access_token.rb
|
128
|
+
- spec/support/shared_examples/token_authenticatable_api.rb
|
129
|
+
- spec/support/shared_examples/warden_authenticatable_api.rb
|
130
|
+
- spec/support/warden.rb
|
131
|
+
homepage: https://github.com/G5/g5_authenticatable_api
|
132
|
+
licenses:
|
133
|
+
- MIT
|
134
|
+
metadata: {}
|
135
|
+
post_install_message:
|
136
|
+
rdoc_options: []
|
137
|
+
require_paths:
|
138
|
+
- lib
|
139
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - ">="
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '0'
|
144
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
|
+
requirements:
|
146
|
+
- - ">="
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
version: '0'
|
149
|
+
requirements: []
|
150
|
+
rubyforge_project:
|
151
|
+
rubygems_version: 2.2.0
|
152
|
+
signing_key:
|
153
|
+
specification_version: 4
|
154
|
+
summary: Helpers for securing APIs with G5
|
155
|
+
test_files:
|
156
|
+
- spec/dummy/README.rdoc
|
157
|
+
- spec/dummy/Rakefile
|
158
|
+
- spec/dummy/app/api/hello_api.rb
|
159
|
+
- spec/dummy/app/assets/images/.keep
|
160
|
+
- spec/dummy/app/assets/javascripts/application.js
|
161
|
+
- spec/dummy/app/assets/javascripts/articles.js
|
162
|
+
- spec/dummy/app/assets/stylesheets/application.css
|
163
|
+
- spec/dummy/app/assets/stylesheets/articles.css
|
164
|
+
- spec/dummy/app/controllers/application_controller.rb
|
165
|
+
- spec/dummy/app/controllers/concerns/.keep
|
166
|
+
- spec/dummy/app/controllers/rails_api/articles_controller.rb
|
167
|
+
- spec/dummy/app/helpers/application_helper.rb
|
168
|
+
- spec/dummy/app/helpers/articles_helper.rb
|
169
|
+
- spec/dummy/app/mailers/.keep
|
170
|
+
- spec/dummy/app/models/.keep
|
171
|
+
- spec/dummy/app/models/article.rb
|
172
|
+
- spec/dummy/app/models/concerns/.keep
|
173
|
+
- spec/dummy/app/models/user.rb
|
174
|
+
- spec/dummy/app/views/layouts/application.html.erb
|
175
|
+
- spec/dummy/bin/bundle
|
176
|
+
- spec/dummy/bin/rails
|
177
|
+
- spec/dummy/bin/rake
|
178
|
+
- spec/dummy/config.ru
|
179
|
+
- spec/dummy/config/application.rb
|
180
|
+
- spec/dummy/config/boot.rb
|
181
|
+
- spec/dummy/config/database.yml.ci
|
182
|
+
- spec/dummy/config/database.yml.sample
|
183
|
+
- spec/dummy/config/environment.rb
|
184
|
+
- spec/dummy/config/environments/development.rb
|
185
|
+
- spec/dummy/config/environments/production.rb
|
186
|
+
- spec/dummy/config/environments/test.rb
|
187
|
+
- spec/dummy/config/initializers/backtrace_silencers.rb
|
188
|
+
- spec/dummy/config/initializers/devise.rb
|
189
|
+
- spec/dummy/config/initializers/filter_parameter_logging.rb
|
190
|
+
- spec/dummy/config/initializers/inflections.rb
|
191
|
+
- spec/dummy/config/initializers/mime_types.rb
|
192
|
+
- spec/dummy/config/initializers/secret_token.rb
|
193
|
+
- spec/dummy/config/initializers/session_store.rb
|
194
|
+
- spec/dummy/config/initializers/wrap_parameters.rb
|
195
|
+
- spec/dummy/config/locales/devise.en.yml
|
196
|
+
- spec/dummy/config/locales/en.yml
|
197
|
+
- spec/dummy/config/routes.rb
|
198
|
+
- spec/dummy/db/migrate/20140217124048_devise_create_users.rb
|
199
|
+
- spec/dummy/db/migrate/20140223194521_create_articles.rb
|
200
|
+
- spec/dummy/db/schema.rb
|
201
|
+
- spec/dummy/db/seeds.rb
|
202
|
+
- spec/dummy/lib/assets/.keep
|
203
|
+
- spec/dummy/lib/tasks/.keep
|
204
|
+
- spec/dummy/log/.keep
|
205
|
+
- spec/dummy/public/404.html
|
206
|
+
- spec/dummy/public/422.html
|
207
|
+
- spec/dummy/public/500.html
|
208
|
+
- spec/dummy/public/favicon.ico
|
209
|
+
- spec/dummy/public/robots.txt
|
210
|
+
- spec/dummy/vendor/assets/javascripts/.keep
|
211
|
+
- spec/dummy/vendor/assets/stylesheets/.keep
|
212
|
+
- spec/factories/user.rb
|
213
|
+
- spec/lib/g5_authenticatable_api/token_validator_spec.rb
|
214
|
+
- spec/lib/g5_authenticatable_api/version_spec.rb
|
215
|
+
- spec/requests/grape_api_spec.rb
|
216
|
+
- spec/requests/rails_api_spec.rb
|
217
|
+
- spec/spec_helper.rb
|
218
|
+
- spec/support/factory_girl.rb
|
219
|
+
- spec/support/shared_contexts/invalid_access_token.rb
|
220
|
+
- spec/support/shared_contexts/valid_access_token.rb
|
221
|
+
- spec/support/shared_examples/token_authenticatable_api.rb
|
222
|
+
- spec/support/shared_examples/warden_authenticatable_api.rb
|
223
|
+
- spec/support/warden.rb
|