authpwn_rails 0.16.2 → 0.17.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.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -6
  3. data/Gemfile +7 -8
  4. data/Gemfile.lock +97 -113
  5. data/Gemfile.rails4 +8 -9
  6. data/{Gemfile.rails3 → Gemfile.rails41} +6 -7
  7. data/Gemfile.rails42 +17 -0
  8. data/README.rdoc +1 -2
  9. data/Rakefile +1 -1
  10. data/VERSION +1 -1
  11. data/app/models/credentials/email.rb +15 -37
  12. data/app/models/credentials/omni_auth_uid.rb +96 -0
  13. data/app/models/credentials/password.rb +0 -5
  14. data/app/models/tokens/base.rb +11 -38
  15. data/authpwn_rails.gemspec +35 -33
  16. data/lib/authpwn_rails/credential_model.rb +1 -5
  17. data/lib/authpwn_rails/generators/all_generator.rb +3 -1
  18. data/lib/authpwn_rails/generators/templates/001_create_users.rb +3 -3
  19. data/lib/authpwn_rails/generators/templates/003_create_credentials.rb +7 -7
  20. data/lib/authpwn_rails/generators/templates/credentials.yml +13 -13
  21. data/lib/authpwn_rails/generators/templates/omniauth_initializer.rb +13 -0
  22. data/lib/authpwn_rails/generators/templates/session_controller_test.rb +22 -0
  23. data/lib/authpwn_rails/generators/templates/session_mailer/email_verification_email.html.erb +3 -3
  24. data/lib/authpwn_rails/generators/templates/session_mailer/email_verification_email.text.erb +1 -1
  25. data/lib/authpwn_rails/generators/templates/session_mailer/reset_password_email.html.erb +3 -3
  26. data/lib/authpwn_rails/generators/templates/session_mailer/reset_password_email.text.erb +1 -1
  27. data/lib/authpwn_rails/generators/templates/session_mailer.rb +1 -1
  28. data/lib/authpwn_rails/generators/templates/session_mailer_test.rb +14 -4
  29. data/lib/authpwn_rails/generators/templates/user.rb +40 -5
  30. data/lib/authpwn_rails/http_basic.rb +6 -5
  31. data/lib/authpwn_rails/routes.rb +20 -7
  32. data/lib/authpwn_rails/session.rb +1 -1
  33. data/lib/authpwn_rails/session_controller.rb +48 -12
  34. data/lib/authpwn_rails/session_mailer.rb +13 -14
  35. data/lib/authpwn_rails/session_model.rb +4 -24
  36. data/lib/authpwn_rails/user_extensions/email_field.rb +5 -21
  37. data/lib/authpwn_rails/user_extensions/password_field.rb +0 -4
  38. data/lib/authpwn_rails/user_model.rb +46 -12
  39. data/lib/authpwn_rails.rb +0 -2
  40. data/test/cookie_controller_test.rb +1 -7
  41. data/test/credentials/omni_auth_uid_credential_test.rb +141 -0
  42. data/test/helpers/action_controller.rb +2 -8
  43. data/test/helpers/db_setup.rb +8 -16
  44. data/test/helpers/routes.rb +35 -30
  45. data/test/helpers/test_order.rb +3 -0
  46. data/test/http_basic_controller_test.rb +7 -18
  47. data/test/routes_test.rb +19 -10
  48. data/test/session_controller_api_test.rb +181 -30
  49. data/test/session_controller_test.rb +6 -0
  50. data/test/session_mailer_api_test.rb +18 -13
  51. data/test/session_mailer_test.rb +6 -0
  52. data/test/test_helper.rb +3 -3
  53. data/test/user_test.rb +54 -7
  54. metadata +65 -64
  55. data/app/models/credentials/facebook.rb +0 -63
  56. data/lib/authpwn_rails/facebook_session.rb +0 -33
  57. data/lib/authpwn_rails/user_extensions/facebook_fields.rb +0 -63
  58. data/test/credentials/facebook_credential_test.rb +0 -64
  59. data/test/facebook_controller_test.rb +0 -65
  60. data/test/user_extensions/facebook_fields_test.rb +0 -61
metadata CHANGED
@@ -1,181 +1,181 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: authpwn_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.2
4
+ version: 0.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Victor Costan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-20 00:00:00.000000000 Z
11
+ date: 2014-11-07 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: fbgraph_rails
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - '>='
18
- - !ruby/object:Gem::Version
19
- version: 0.2.2
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - '>='
25
- - !ruby/object:Gem::Version
26
- version: 0.2.2
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: rails
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
- - - '>='
17
+ - - ">="
32
18
  - !ruby/object:Gem::Version
33
- version: 3.2.17
19
+ version: 4.0.9
34
20
  type: :runtime
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
- - - '>='
24
+ - - ">="
39
25
  - !ruby/object:Gem::Version
40
- version: 3.2.17
26
+ version: 4.0.9
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: bundler
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
- - - '>='
31
+ - - ">="
46
32
  - !ruby/object:Gem::Version
47
- version: 1.3.5
33
+ version: 1.7.3
48
34
  type: :development
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
- - - '>='
38
+ - - ">="
53
39
  - !ruby/object:Gem::Version
54
- version: 1.3.5
40
+ version: 1.7.3
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: mocha
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
- - - '>='
45
+ - - ">="
60
46
  - !ruby/object:Gem::Version
61
47
  version: 0.14.0
62
48
  type: :development
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
- - - '>='
52
+ - - ">="
67
53
  - !ruby/object:Gem::Version
68
54
  version: 0.14.0
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: jeweler
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
- - - '>='
59
+ - - ">="
74
60
  - !ruby/object:Gem::Version
75
- version: 1.8.8
61
+ version: 2.0.1
76
62
  type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
- - - '>='
66
+ - - ">="
81
67
  - !ruby/object:Gem::Version
82
- version: 1.8.8
68
+ version: 2.0.1
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: simplecov
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
- - - '>='
73
+ - - ">="
88
74
  - !ruby/object:Gem::Version
89
75
  version: '0'
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
- - - '>='
80
+ - - ">="
95
81
  - !ruby/object:Gem::Version
96
82
  version: '0'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: mysql2
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
- - - '>='
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: 0.3.16
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: 0.3.16
97
+ - !ruby/object:Gem::Dependency
98
+ name: omniauth
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: 0.3.14
103
+ version: 1.2.2
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '>='
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: 0.3.14
110
+ version: 1.2.2
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: pg
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - '>='
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: 0.17.0
117
+ version: 0.17.1
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - '>='
122
+ - - ">="
123
123
  - !ruby/object:Gem::Version
124
- version: 0.17.0
124
+ version: 0.17.1
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: sqlite3
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - '>='
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
- version: 1.3.8
131
+ version: 1.3.9
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - '>='
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
- version: 1.3.8
138
+ version: 1.3.9
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: rubysl
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - '>='
143
+ - - ">="
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - '>='
150
+ - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: rubysl-bundler
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - '>='
157
+ - - ">="
158
158
  - !ruby/object:Gem::Version
159
159
  version: '0'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - '>='
164
+ - - ">="
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: rubysl-rake
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
- - - '>='
171
+ - - ">="
172
172
  - !ruby/object:Gem::Version
173
173
  version: '0'
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
- - - '>='
178
+ - - ">="
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
181
  description: Works with Facebook.
@@ -186,20 +186,21 @@ extra_rdoc_files:
186
186
  - LICENSE
187
187
  - README.rdoc
188
188
  files:
189
- - .document
190
- - .project
191
- - .travis.yml
189
+ - ".document"
190
+ - ".project"
191
+ - ".travis.yml"
192
192
  - Gemfile
193
193
  - Gemfile.lock
194
- - Gemfile.rails3
195
194
  - Gemfile.rails4
195
+ - Gemfile.rails41
196
+ - Gemfile.rails42
196
197
  - LICENSE
197
198
  - README.rdoc
198
199
  - Rakefile
199
200
  - VERSION
200
201
  - app/helpers/session_helper.rb
201
202
  - app/models/credentials/email.rb
202
- - app/models/credentials/facebook.rb
203
+ - app/models/credentials/omni_auth_uid.rb
203
204
  - app/models/credentials/password.rb
204
205
  - app/models/tokens/base.rb
205
206
  - app/models/tokens/email_verification.rb
@@ -214,13 +215,13 @@ files:
214
215
  - lib/authpwn_rails/current_user.rb
215
216
  - lib/authpwn_rails/engine.rb
216
217
  - lib/authpwn_rails/expires.rb
217
- - lib/authpwn_rails/facebook_session.rb
218
218
  - lib/authpwn_rails/generators/all_generator.rb
219
219
  - lib/authpwn_rails/generators/templates/001_create_users.rb
220
220
  - lib/authpwn_rails/generators/templates/003_create_credentials.rb
221
221
  - lib/authpwn_rails/generators/templates/credential.rb
222
222
  - lib/authpwn_rails/generators/templates/credentials.yml
223
223
  - lib/authpwn_rails/generators/templates/initializer.rb
224
+ - lib/authpwn_rails/generators/templates/omniauth_initializer.rb
224
225
  - lib/authpwn_rails/generators/templates/session.rb
225
226
  - lib/authpwn_rails/generators/templates/session/forbidden.html.erb
226
227
  - lib/authpwn_rails/generators/templates/session/home.html.erb
@@ -245,19 +246,17 @@ files:
245
246
  - lib/authpwn_rails/session_model.rb
246
247
  - lib/authpwn_rails/test_extensions.rb
247
248
  - lib/authpwn_rails/user_extensions/email_field.rb
248
- - lib/authpwn_rails/user_extensions/facebook_fields.rb
249
249
  - lib/authpwn_rails/user_extensions/password_field.rb
250
250
  - lib/authpwn_rails/user_model.rb
251
251
  - test/cookie_controller_test.rb
252
252
  - test/credentials/email_credential_test.rb
253
253
  - test/credentials/email_verification_token_test.rb
254
- - test/credentials/facebook_credential_test.rb
254
+ - test/credentials/omni_auth_uid_credential_test.rb
255
255
  - test/credentials/one_time_token_credential_test.rb
256
256
  - test/credentials/password_credential_test.rb
257
257
  - test/credentials/password_reset_token_test.rb
258
258
  - test/credentials/session_uid_token_test.rb
259
259
  - test/credentials/token_crendential_test.rb
260
- - test/facebook_controller_test.rb
261
260
  - test/fixtures/bare_session/forbidden.html.erb
262
261
  - test/fixtures/bare_session/home.html.erb
263
262
  - test/fixtures/bare_session/new.html.erb
@@ -273,17 +272,19 @@ files:
273
272
  - test/helpers/rails.rb
274
273
  - test/helpers/rails_undo.rb
275
274
  - test/helpers/routes.rb
275
+ - test/helpers/test_order.rb
276
276
  - test/helpers/view_helpers.rb
277
277
  - test/http_basic_controller_test.rb
278
278
  - test/initializer_test.rb
279
279
  - test/routes_test.rb
280
280
  - test/session_controller_api_test.rb
281
+ - test/session_controller_test.rb
281
282
  - test/session_mailer_api_test.rb
283
+ - test/session_mailer_test.rb
282
284
  - test/session_test.rb
283
285
  - test/test_extensions_test.rb
284
286
  - test/test_helper.rb
285
287
  - test/user_extensions/email_field_test.rb
286
- - test/user_extensions/facebook_fields_test.rb
287
288
  - test/user_extensions/password_field_test.rb
288
289
  - test/user_test.rb
289
290
  homepage: http://github.com/pwnall/authpwn_rails
@@ -296,18 +297,18 @@ require_paths:
296
297
  - lib
297
298
  required_ruby_version: !ruby/object:Gem::Requirement
298
299
  requirements:
299
- - - '>='
300
+ - - ">="
300
301
  - !ruby/object:Gem::Version
301
302
  version: '0'
302
303
  required_rubygems_version: !ruby/object:Gem::Requirement
303
304
  requirements:
304
- - - '>='
305
+ - - ">="
305
306
  - !ruby/object:Gem::Version
306
307
  version: '0'
307
308
  requirements: []
308
309
  rubyforge_project:
309
- rubygems_version: 2.0.14
310
+ rubygems_version: 2.2.2
310
311
  signing_key:
311
312
  specification_version: 4
312
- summary: User authentication for Rails 3 and 4 applications.
313
+ summary: User authentication for Rails 4 applications.
313
314
  test_files: []
@@ -1,63 +0,0 @@
1
- # :namespace
2
- module Credentials
3
-
4
- # Associates a Facebook account and OAuth2 token with an account.
5
- class Facebook < ::Credential
6
- # The Graph API object ID of the Facebook account.
7
- alias_attribute :facebook_uid, :name
8
- validates :name, format: /\A\d+\Z/, presence: true,
9
- uniqueness: { scope: [:type],
10
- message: 'Your Facebook user is already associated to an account' }
11
-
12
- # A user can be associated to a single Facebook account.
13
- validates :user_id, uniqueness: {
14
- message: 'Your account is already associated to a Facebook user' }
15
-
16
- # OAuth2 token issued by Facebook.
17
- alias_attribute :access_token, :key
18
- validates :key, presence: true
19
-
20
- # FBGraph client loaded with this access token.
21
- def facebook_client
22
- @client ||= FBGraphRails.fbclient(access_token)
23
- end
24
-
25
- # Finds or creates the model containing a token.
26
- #
27
- # If a model for the same user exists, the model is updated with the given
28
- # token. Otherwise, a new model will be created, together with a user.
29
- def self.for(access_token)
30
- uid = uid_from_token access_token
31
- credential = self.where(name: uid.to_str).first
32
- if credential
33
- credential.key = access_token
34
- credential.save!
35
- else
36
- User.transaction do
37
- user = User.create!
38
- credential = self.new
39
- user.credentials << credential
40
- credential.facebook_uid = uid
41
- credential.access_token = access_token
42
- credential.save!
43
- end
44
- end
45
- credential
46
- end
47
-
48
- # Extracts the Facebook user ID from a OAuth2 token.
49
- #
50
- # This used to be a hack that pulled the UID out of an OAuth2 token. The new
51
- # encrypted OAuth2 tokens don't have UIDs anymore, so this method is an
52
- # interim hack for old code that still depends on it.
53
- def self.uid_from_token(access_token)
54
- FBGraphRails.fbclient(access_token).selection.me.info![:id].to_s
55
- end
56
-
57
- if ActiveRecord::Base.respond_to? :mass_assignment_sanitizer=
58
- # Forms should not be able to touch any attribute.
59
- attr_accessible
60
- end
61
- end # class Credentials::Facebook
62
-
63
- end # namespace Credentials
@@ -1,33 +0,0 @@
1
- require 'action_controller'
2
-
3
- # :nodoc: add authenticates_using_facebook
4
- class ActionController::Base
5
- # Authenticates users via Facebook OAuth2, using fbgraph_rails.
6
- #
7
- # The User model class must implement for_facebook_token. The controller
8
- # should obtain the Facebook token, using probes_facebook_access_token or
9
- # requires_facebook_access_token.
10
- def self.authenticates_using_facebook(options = {})
11
- include Authpwn::FacebookControllerInstanceMethods
12
- before_filter :authenticate_using_facebook_access_token, options
13
- end
14
- end # module Authpwn::FacebookExtensions::ControllerClassMethods
15
-
16
- # :nodoc: namespace
17
- module Authpwn
18
-
19
- # Included in controllers that call authenticates_using_facebook.
20
- module FacebookControllerInstanceMethods
21
- def authenticate_using_facebook_access_token
22
- return true if current_user
23
- if access_token = current_facebook_access_token
24
- self.current_user = User.for_facebook_token access_token
25
- # NOTE: nixing the token from the session so the user won't be logged on
26
- # immediately after logging off
27
- self.current_facebook_access_token = nil
28
- end
29
- end
30
- private :authenticate_using_facebook_access_token
31
- end # module Authpwn::FacebookControllerInstanceMethods
32
-
33
- end # namespace Authpwn
@@ -1,63 +0,0 @@
1
- require 'active_model'
2
- require 'active_support'
3
-
4
- # :nodoc: namespace
5
- module Authpwn
6
-
7
- # :nodoc: namespace
8
- module UserExtensions
9
-
10
- # Augments the User model with Facebook-related virtual attributes.
11
- module FacebookFields
12
- extend ActiveSupport::Concern
13
-
14
- module ClassMethods
15
- # The user that owns a given Facebook OAuth2 token.
16
- #
17
- # A new user will be created if the token doesn't belong to any user. This
18
- # is the case for a new visitor.
19
- def for_facebook_token(access_token)
20
- Credentials::Facebook.for(access_token).user
21
- end
22
-
23
- # The user who has a certain e-mail, or nil if the e-mail is unclaimed.
24
- def with_facebook_uid(facebook_uid)
25
- credential = Credentials::Facebook.where(name: facebook_uid).
26
- includes(:user).first
27
- credential && credential.user
28
- end
29
- end
30
-
31
- # Credentials::Facebook instance associated with this user.
32
- def facebook_credential
33
- credentials.find { |c| c.instance_of?(Credentials::Facebook) }
34
- end
35
-
36
- # FBGraph client loaded with this access token.
37
- #
38
- # Returns nil if this user has no Facebook credential.
39
- def facebook_client
40
- credential = self.facebook_credential
41
- credential && credential.facebook_client
42
- end
43
-
44
- # The facebook user ID from the user's Facebook credential.
45
- #
46
- # Returns nil if this user has no Facebook credential.
47
- def facebook_uid
48
- credential = self.facebook_credential
49
- credential && credential.facebook_uid
50
- end
51
-
52
- # The facebook OAuth2 access token from the user's Facebook credential.
53
- #
54
- # Returns nil if this user has no Facebook credential.
55
- def facebook_access_token
56
- credential = self.facebook_credential
57
- credential && credential.access_token
58
- end
59
- end # module Authpwn::UserExtensions::FacebookFields
60
-
61
- end # module Authpwn::UserExtensions
62
-
63
- end # module Authpwn
@@ -1,64 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
-
3
- class FacebookCredentialTest < ActiveSupport::TestCase
4
- def setup
5
- @code = 'AAAEj8jKX2a8BAA4kNheRhOs6SlECVcZCE9o5pPKMytOjjoiNAoZBGZAwuL4KrrxXWesfJRhzDZCJiqrcQG3UdjRRNtyMJQMZD'
6
- @credential = Credentials::Facebook.new
7
- @credential.facebook_uid = '1181310542'
8
- @credential.key = 'AAAEj8jKX2a8BAOBMZCjxBe4dw7cRoD1JVxUgZAtB6ozJlR4Viazh6OAYcHB5kZAtUwgjpDy7a54ZA1DObLmBT9X99CLWYOj5Stqx8bHwnE7EzyBS1WxY'
9
- @credential.user = users(:bill)
10
- end
11
-
12
- test 'setup' do
13
- assert @credential.valid?
14
- end
15
-
16
- test 'key required' do
17
- @credential.key = nil
18
- assert !@credential.valid?
19
- end
20
-
21
- test 'user presence' do
22
- @credential.user = nil
23
- assert !@credential.valid?
24
- end
25
-
26
- test 'user uniqueness' do
27
- @credential.user = users(:john)
28
- assert !@credential.valid?
29
- end
30
-
31
- test 'facebook_uid uniqueness' do
32
- @credential.facebook_uid = credentials(:jane_facebook).facebook_uid
33
- assert !@credential.valid?
34
- end
35
-
36
- test "uid_from_token" do
37
- assert_equal '1011950666', Credentials::Facebook.uid_from_token(@code)
38
- end
39
-
40
- test "for with existing access token" do
41
- Credentials::Facebook.expects(:uid_from_token).with(@code).at_least_once.
42
- returns(credentials(:jane_facebook).facebook_uid)
43
-
44
- assert_equal credentials(:jane_facebook), Credentials::Facebook.for(@code),
45
- 'Wrong token'
46
- assert_equal @code, credentials(:jane_facebook).reload.key,
47
- 'Token not refreshed'
48
- end
49
-
50
- test "for with new access token" do
51
- credential = nil
52
- Credentials::Facebook.expects(:uid_from_token).at_least_once.
53
- with(@credential.key).returns('123456789')
54
- assert_difference 'Credentials::Facebook.count', 1 do
55
- credential = Credentials::Facebook.for @credential.key
56
- end
57
- assert_equal '123456789', credential.facebook_uid
58
- assert_equal @credential.key, credential.key
59
- assert !credential.new_record?, 'New credential not saved'
60
- assert !credential.user.new_record?, "New credential's user not saved"
61
- assert_operator credential.user.credentials, :include?, credential,
62
- "New user's credentials does not include Facebook credential"
63
- end
64
- end
@@ -1,65 +0,0 @@
1
- require File.expand_path('../test_helper', __FILE__)
2
-
3
- # Mock controller used for testing session handling.
4
- class FacebookController < ApplicationController
5
- authenticates_using_session
6
- probes_facebook_access_token
7
- authenticates_using_facebook
8
-
9
- def show
10
- if current_user
11
- render text: "User: #{current_user.id}"
12
- else
13
- render text: "No user"
14
- end
15
- end
16
- end
17
-
18
- class UserWithFb2 < User
19
- include Authpwn::UserExtensions::FacebookFields
20
- end
21
-
22
- class FacebookControllerTest < ActionController::TestCase
23
- setup do
24
- @old_user_class = ::User
25
- Object.send :remove_const, :User
26
- ::User = UserWithFb2
27
-
28
- @user = users(:john)
29
- @new_token = 'facebook:new_token|boom'
30
- end
31
-
32
- teardown do
33
- Object.send :remove_const, :User
34
- ::User = @old_user_class
35
- end
36
-
37
- test "no facebook token" do
38
- get :show
39
- assert_response :success
40
- assert_nil assigns(:current_user)
41
- end
42
-
43
- test "facebook token for existing user" do
44
- Credentials::Facebook.expects(:uid_from_token).at_least_once.
45
- with(credentials(:john_facebook).key).
46
- returns(credentials(:john_facebook).facebook_uid)
47
- set_session_current_facebook_token credentials(:john_facebook).key
48
- get :show, {}
49
- assert_response :success
50
- assert_equal @user, assigns(:current_user)
51
- end
52
-
53
- test "new facebook token" do
54
- set_session_current_facebook_token @new_token
55
- Credentials::Facebook.expects(:uid_from_token).at_least_once.
56
- with(@new_token).returns('12345678')
57
- get :show, {}
58
- assert_response :success
59
- assert_not_equal @user, assigns(:current_user)
60
- end
61
-
62
- test "auth_controller? is false" do
63
- assert_equal false, @controller.auth_controller?
64
- end
65
- end
@@ -1,61 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
-
3
- class UserWithFb < User
4
- include Authpwn::UserExtensions::FacebookFields
5
- end
6
-
7
- class FacebookFieldsTest < ActiveSupport::TestCase
8
- def setup
9
- @user = UserWithFb.new
10
-
11
- @john = UserWithFb.find_by_id(users(:john).id)
12
- @jane = UserWithFb.find_by_id(users(:jane).id)
13
- @bill = UserWithFb.find_by_id(users(:bill).id)
14
- end
15
-
16
- test 'setup' do
17
- assert @user.valid?
18
- end
19
-
20
- test 'facebook_credential' do
21
- assert_equal credentials(:john_facebook), @john.facebook_credential
22
- assert_equal credentials(:jane_facebook), @jane.facebook_credential
23
- assert_nil @bill.facebook_credential
24
- end
25
-
26
- test 'facebook_uid' do
27
- assert_equal credentials(:john_facebook).facebook_uid, @john.facebook_uid
28
- assert_equal credentials(:jane_facebook).facebook_uid, @jane.facebook_uid
29
- assert_nil @bill.facebook_uid
30
- end
31
-
32
- test 'facebook_access_token' do
33
- assert_equal credentials(:john_facebook).access_token,
34
- @john.facebook_access_token
35
- assert_equal credentials(:jane_facebook).access_token,
36
- @jane.facebook_access_token
37
- assert_nil @bill.facebook_access_token
38
- end
39
-
40
- test 'facebook_client' do
41
- assert_equal credentials(:john_facebook).access_token,
42
- @john.facebook_client.access_token
43
- assert_nil @bill.facebook_client
44
- end
45
-
46
- test 'with_facebook_uid' do
47
- assert_equal users(:john), UserWithFb.with_facebook_uid(
48
- credentials(:john_facebook).facebook_uid)
49
- assert_equal users(:jane), UserWithFb.with_facebook_uid(
50
- credentials(:jane_facebook).facebook_uid)
51
- assert_nil UserWithFb.with_facebook_uid('0000000')
52
- end
53
-
54
- test 'for_facebook_token' do
55
- Credentials::Facebook.expects(:uid_from_token).at_least_once.
56
- with(credentials(:john_facebook).key).
57
- returns credentials(:john_facebook).facebook_uid
58
- assert_equal users(:john),
59
- UserWithFb.for_facebook_token(credentials(:john_facebook).access_token)
60
- end
61
- end