rails_api_auth 0.0.2

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 (65) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +22 -0
  3. data/README.md +3 -0
  4. data/Rakefile +20 -0
  5. data/app/controllers/oauth2_controller.rb +54 -0
  6. data/app/controllers/rails_api_auth/application_controller.rb +7 -0
  7. data/app/lib/login_not_found.rb +9 -0
  8. data/app/models/login.rb +47 -0
  9. data/app/services/facebook_authenticator.rb +64 -0
  10. data/config/initializers/facebook.rb +6 -0
  11. data/config/routes.rb +4 -0
  12. data/db/migrate/20150709221755_create_logins.rb +16 -0
  13. data/lib/rails_api_auth.rb +5 -0
  14. data/lib/rails_api_auth/authentication.rb +32 -0
  15. data/lib/rails_api_auth/engine.rb +19 -0
  16. data/lib/rails_api_auth/version.rb +5 -0
  17. data/lib/tasks/rails_api_auth_tasks.rake +4 -0
  18. data/spec/dummy/README.rdoc +28 -0
  19. data/spec/dummy/Rakefile +6 -0
  20. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  21. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  22. data/spec/dummy/app/controllers/application_controller.rb +7 -0
  23. data/spec/dummy/app/controllers/authenticated_controller.rb +13 -0
  24. data/spec/dummy/bin/bundle +3 -0
  25. data/spec/dummy/bin/rails +4 -0
  26. data/spec/dummy/bin/rake +4 -0
  27. data/spec/dummy/bin/setup +29 -0
  28. data/spec/dummy/config.ru +4 -0
  29. data/spec/dummy/config/application.rb +18 -0
  30. data/spec/dummy/config/boot.rb +5 -0
  31. data/spec/dummy/config/database.yml +25 -0
  32. data/spec/dummy/config/environment.rb +5 -0
  33. data/spec/dummy/config/environments/development.rb +38 -0
  34. data/spec/dummy/config/environments/production.rb +79 -0
  35. data/spec/dummy/config/environments/test.rb +37 -0
  36. data/spec/dummy/config/initializers/assets.rb +11 -0
  37. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  38. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  39. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  40. data/spec/dummy/config/initializers/inflections.rb +16 -0
  41. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  42. data/spec/dummy/config/initializers/session_store.rb +3 -0
  43. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  44. data/spec/dummy/config/locales/en.yml +23 -0
  45. data/spec/dummy/config/routes.rb +3 -0
  46. data/spec/dummy/config/secrets.yml +22 -0
  47. data/spec/dummy/db/development.sqlite3 +0 -0
  48. data/spec/dummy/db/migrate/20150709221900_create_users.rb +11 -0
  49. data/spec/dummy/db/production.sqlite3 +0 -0
  50. data/spec/dummy/db/schema.rb +34 -0
  51. data/spec/dummy/db/test.sqlite3 +0 -0
  52. data/spec/dummy/log/development.log +16 -0
  53. data/spec/dummy/log/test.log +8350 -0
  54. data/spec/dummy/public/404.html +67 -0
  55. data/spec/dummy/public/422.html +67 -0
  56. data/spec/dummy/public/500.html +66 -0
  57. data/spec/dummy/public/favicon.ico +0 -0
  58. data/spec/factories/logins.rb +11 -0
  59. data/spec/models/login_spec.rb +69 -0
  60. data/spec/requests/authenticated_spec.rb +47 -0
  61. data/spec/requests/oauth2_spec.rb +187 -0
  62. data/spec/services/facebook_authenticator_spec.rb +54 -0
  63. data/spec/spec_helper.rb +19 -0
  64. data/spec/support/factory_girl.rb +3 -0
  65. metadata +233 -0
@@ -0,0 +1,54 @@
1
+ require 'spec_helper'
2
+
3
+ describe FacebookAuthenticator do
4
+ describe '#authenticate' do
5
+ let(:auth_code) { 'authcode' }
6
+ let(:email) { 'email@facebook.com' }
7
+ let(:facebook_data) do
8
+ {
9
+ id: '1238190321',
10
+ email: email
11
+ }
12
+ end
13
+ let(:response_with_fb_token) { { body: '{ "access_token": "access_token" }' } }
14
+ let(:response_with_fb_user) { { body: JSON.generate(facebook_data), headers: { 'Content-Type' => 'application/json' } } }
15
+ let(:login) { double('login') }
16
+
17
+ subject { described_class.new(auth_code).authenticate }
18
+
19
+ before do
20
+ stub_request(:get, %r{https://graph.facebook.com/v2.3/oauth/access_token}).to_return(response_with_fb_token)
21
+ stub_request(:get, %r{https://graph.facebook.com/v2.3/me}).to_return(response_with_fb_user)
22
+ end
23
+
24
+ context 'new login' do
25
+ let(:login_attributes) do
26
+ {
27
+ email: facebook_data[:email],
28
+ facebook_uid: facebook_data[:id]
29
+ }
30
+ end
31
+
32
+ before do
33
+ allow(Login).to receive(:create!).with(login_attributes).and_return login
34
+ end
35
+
36
+ it 'returns a login created from facebook account' do
37
+ expect(subject).to eql login
38
+ end
39
+ end
40
+
41
+ context 'existing login' do
42
+ before do
43
+ expect(Login).to receive(:find_by).with(email: facebook_data[:email]).and_return login
44
+ allow(login).to receive(:update_attributes!).with(facebook_uid: facebook_data[:id])
45
+ end
46
+
47
+ it 'connects login to facebook account' do
48
+ expect(login).to receive(:update_attributes!).with(facebook_uid: facebook_data[:id])
49
+
50
+ subject
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,19 @@
1
+ ENV['RAILS_ENV'] ||= 'test'
2
+
3
+ require File.expand_path('../dummy/config/environment.rb', __FILE__)
4
+ require 'rspec/rails'
5
+ # require 'rspec/autorun'
6
+ require 'factory_girl_rails'
7
+ require 'faker'
8
+
9
+ Rails.backtrace_cleaner.remove_silencers!
10
+
11
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
12
+
13
+ RSpec.configure do |config|
14
+ config.mock_with :rspec
15
+ config.use_transactional_fixtures = true
16
+ config.infer_base_class_for_anonymous_controllers = false
17
+ config.infer_spec_type_from_file_location!
18
+ config.order = 'random'
19
+ end
@@ -0,0 +1,3 @@
1
+ RSpec.configure do |config|
2
+ config.include FactoryGirl::Syntax::Methods
3
+ end
metadata ADDED
@@ -0,0 +1,233 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rails_api_auth
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Marco Otte-Witte
8
+ - Oliver Barnes
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-07-10 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: 3.2.6
21
+ - - "<"
22
+ - !ruby/object:Gem::Version
23
+ version: '5'
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ version: 3.2.6
31
+ - - "<"
32
+ - !ruby/object:Gem::Version
33
+ version: '5'
34
+ - !ruby/object:Gem::Dependency
35
+ name: bcrypt
36
+ requirement: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 3.1.7
41
+ type: :runtime
42
+ prerelease: false
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 3.1.7
48
+ - !ruby/object:Gem::Dependency
49
+ name: httparty
50
+ requirement: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.13.3
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.13.3
62
+ - !ruby/object:Gem::Dependency
63
+ name: email_validator
64
+ requirement: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 1.6.0
69
+ type: :runtime
70
+ prerelease: false
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 1.6.0
76
+ - !ruby/object:Gem::Dependency
77
+ name: faker
78
+ requirement: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 1.4.3
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 1.4.3
90
+ description: Rails API Auth is a Rails Engine that implements the "Resource Owner
91
+ Password Credentials Grant" OAuth 2.0 flow as well as Facebook authentication for
92
+ API projects.
93
+ email:
94
+ - marco.otte-witte@simplabs.com
95
+ executables: []
96
+ extensions: []
97
+ extra_rdoc_files: []
98
+ files:
99
+ - LICENSE
100
+ - README.md
101
+ - Rakefile
102
+ - app/controllers/oauth2_controller.rb
103
+ - app/controllers/rails_api_auth/application_controller.rb
104
+ - app/lib/login_not_found.rb
105
+ - app/models/login.rb
106
+ - app/services/facebook_authenticator.rb
107
+ - config/initializers/facebook.rb
108
+ - config/routes.rb
109
+ - db/migrate/20150709221755_create_logins.rb
110
+ - lib/rails_api_auth.rb
111
+ - lib/rails_api_auth/authentication.rb
112
+ - lib/rails_api_auth/engine.rb
113
+ - lib/rails_api_auth/version.rb
114
+ - lib/tasks/rails_api_auth_tasks.rake
115
+ - spec/dummy/README.rdoc
116
+ - spec/dummy/Rakefile
117
+ - spec/dummy/app/assets/javascripts/application.js
118
+ - spec/dummy/app/assets/stylesheets/application.css
119
+ - spec/dummy/app/controllers/application_controller.rb
120
+ - spec/dummy/app/controllers/authenticated_controller.rb
121
+ - spec/dummy/bin/bundle
122
+ - spec/dummy/bin/rails
123
+ - spec/dummy/bin/rake
124
+ - spec/dummy/bin/setup
125
+ - spec/dummy/config.ru
126
+ - spec/dummy/config/application.rb
127
+ - spec/dummy/config/boot.rb
128
+ - spec/dummy/config/database.yml
129
+ - spec/dummy/config/environment.rb
130
+ - spec/dummy/config/environments/development.rb
131
+ - spec/dummy/config/environments/production.rb
132
+ - spec/dummy/config/environments/test.rb
133
+ - spec/dummy/config/initializers/assets.rb
134
+ - spec/dummy/config/initializers/backtrace_silencers.rb
135
+ - spec/dummy/config/initializers/cookies_serializer.rb
136
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
137
+ - spec/dummy/config/initializers/inflections.rb
138
+ - spec/dummy/config/initializers/mime_types.rb
139
+ - spec/dummy/config/initializers/session_store.rb
140
+ - spec/dummy/config/initializers/wrap_parameters.rb
141
+ - spec/dummy/config/locales/en.yml
142
+ - spec/dummy/config/routes.rb
143
+ - spec/dummy/config/secrets.yml
144
+ - spec/dummy/db/development.sqlite3
145
+ - spec/dummy/db/migrate/20150709221900_create_users.rb
146
+ - spec/dummy/db/production.sqlite3
147
+ - spec/dummy/db/schema.rb
148
+ - spec/dummy/db/test.sqlite3
149
+ - spec/dummy/log/development.log
150
+ - spec/dummy/log/test.log
151
+ - spec/dummy/public/404.html
152
+ - spec/dummy/public/422.html
153
+ - spec/dummy/public/500.html
154
+ - spec/dummy/public/favicon.ico
155
+ - spec/factories/logins.rb
156
+ - spec/models/login_spec.rb
157
+ - spec/requests/authenticated_spec.rb
158
+ - spec/requests/oauth2_spec.rb
159
+ - spec/services/facebook_authenticator_spec.rb
160
+ - spec/spec_helper.rb
161
+ - spec/support/factory_girl.rb
162
+ homepage: https://github.com/simplabs/rails-api-auth
163
+ licenses:
164
+ - MIT
165
+ metadata: {}
166
+ post_install_message:
167
+ rdoc_options: []
168
+ require_paths:
169
+ - lib
170
+ required_ruby_version: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ required_rubygems_version: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ requirements: []
181
+ rubyforge_project:
182
+ rubygems_version: 2.4.7
183
+ signing_key:
184
+ specification_version: 4
185
+ summary: Engine that implements OAuth 2.0 and Facebook authentication for API projects
186
+ test_files:
187
+ - spec/dummy/app/assets/javascripts/application.js
188
+ - spec/dummy/app/assets/stylesheets/application.css
189
+ - spec/dummy/app/controllers/application_controller.rb
190
+ - spec/dummy/app/controllers/authenticated_controller.rb
191
+ - spec/dummy/bin/bundle
192
+ - spec/dummy/bin/rails
193
+ - spec/dummy/bin/rake
194
+ - spec/dummy/bin/setup
195
+ - spec/dummy/config/application.rb
196
+ - spec/dummy/config/boot.rb
197
+ - spec/dummy/config/database.yml
198
+ - spec/dummy/config/environment.rb
199
+ - spec/dummy/config/environments/development.rb
200
+ - spec/dummy/config/environments/production.rb
201
+ - spec/dummy/config/environments/test.rb
202
+ - spec/dummy/config/initializers/assets.rb
203
+ - spec/dummy/config/initializers/backtrace_silencers.rb
204
+ - spec/dummy/config/initializers/cookies_serializer.rb
205
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
206
+ - spec/dummy/config/initializers/inflections.rb
207
+ - spec/dummy/config/initializers/mime_types.rb
208
+ - spec/dummy/config/initializers/session_store.rb
209
+ - spec/dummy/config/initializers/wrap_parameters.rb
210
+ - spec/dummy/config/locales/en.yml
211
+ - spec/dummy/config/routes.rb
212
+ - spec/dummy/config/secrets.yml
213
+ - spec/dummy/config.ru
214
+ - spec/dummy/db/development.sqlite3
215
+ - spec/dummy/db/migrate/20150709221900_create_users.rb
216
+ - spec/dummy/db/production.sqlite3
217
+ - spec/dummy/db/schema.rb
218
+ - spec/dummy/db/test.sqlite3
219
+ - spec/dummy/log/development.log
220
+ - spec/dummy/log/test.log
221
+ - spec/dummy/public/404.html
222
+ - spec/dummy/public/422.html
223
+ - spec/dummy/public/500.html
224
+ - spec/dummy/public/favicon.ico
225
+ - spec/dummy/Rakefile
226
+ - spec/dummy/README.rdoc
227
+ - spec/factories/logins.rb
228
+ - spec/models/login_spec.rb
229
+ - spec/requests/authenticated_spec.rb
230
+ - spec/requests/oauth2_spec.rb
231
+ - spec/services/facebook_authenticator_spec.rb
232
+ - spec/spec_helper.rb
233
+ - spec/support/factory_girl.rb