authlogic_facebook_shim 0.3.3 → 0.5.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 (59) hide show
  1. data/Gemfile +4 -0
  2. data/Gemfile.lock +113 -0
  3. data/README.rdoc +8 -1
  4. data/Rakefile +39 -20
  5. data/authlogic_facebook_shim.gemspec +22 -19
  6. data/lib/authlogic_facebook_shim/adapters/koala_adapter.rb +12 -9
  7. data/lib/authlogic_facebook_shim/railtie.rb +19 -0
  8. data/lib/authlogic_facebook_shim/session/adapter.rb +23 -0
  9. data/lib/authlogic_facebook_shim/session/config.rb +1 -1
  10. data/lib/authlogic_facebook_shim/session/facebook.rb +3 -4
  11. data/lib/authlogic_facebook_shim/session.rb +4 -0
  12. data/lib/authlogic_facebook_shim/version.rb +3 -0
  13. data/lib/authlogic_facebook_shim.rb +6 -9
  14. data/test/dummy/app/controllers/application_controller.rb +3 -0
  15. data/test/dummy/app/helpers/application_helper.rb +2 -0
  16. data/test/{rails_root → dummy}/app/models/user.rb +1 -0
  17. data/test/{rails_root → dummy}/app/models/user_session.rb +0 -0
  18. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  19. data/test/dummy/config/application.rb +49 -0
  20. data/test/dummy/config/boot.rb +10 -0
  21. data/test/dummy/config/database.yml +6 -0
  22. data/test/dummy/config/environment.rb +5 -0
  23. data/test/dummy/config/environments/development.rb +27 -0
  24. data/test/dummy/config/environments/test.rb +37 -0
  25. data/test/{rails_root → dummy}/config/facebook.yml +0 -0
  26. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  27. data/test/dummy/config/initializers/inflections.rb +10 -0
  28. data/test/dummy/config/initializers/mime_types.rb +5 -0
  29. data/test/dummy/config/initializers/secret_token.rb +7 -0
  30. data/test/dummy/config/initializers/session_store.rb +8 -0
  31. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  32. data/test/dummy/config/locales/en.yml +5 -0
  33. data/test/dummy/config/routes.rb +2 -0
  34. data/test/dummy/config.ru +4 -0
  35. data/test/{rails_root → dummy}/db/migrate/20101217000008_create_users.rb +0 -0
  36. data/test/{rails_root → dummy}/db/seeds.rb +0 -0
  37. data/test/dummy/log/test.log +1386 -0
  38. data/test/test_helper.rb +20 -20
  39. data/test/units/adapters/koala_adapter_test.rb +202 -146
  40. data/test/units/session/config_test.rb +110 -108
  41. data/test/units/session/facebook_test.rb +175 -156
  42. metadata +123 -155
  43. data/VERSION +0 -1
  44. data/test/rails_root/app/controllers/application_controller.rb +0 -10
  45. data/test/rails_root/app/helpers/application_helper.rb +0 -3
  46. data/test/rails_root/config/boot.rb +0 -110
  47. data/test/rails_root/config/database.yml +0 -10
  48. data/test/rails_root/config/environment.rb +0 -31
  49. data/test/rails_root/config/environments/development.rb +0 -0
  50. data/test/rails_root/config/environments/test.rb +0 -0
  51. data/test/rails_root/config/initializers/authlogic_facebook_koala.rb +0 -5
  52. data/test/rails_root/config/initializers/new_rails_defaults.rb +0 -21
  53. data/test/rails_root/config/initializers/session_store.rb +0 -15
  54. data/test/rails_root/config/locales/en.yml +0 -5
  55. data/test/rails_root/config/routes.rb +0 -43
  56. data/test/rails_root/log/test.log +0 -1137
  57. data/test/rails_root/script/console +0 -3
  58. data/test/rails_root/script/dbconsole +0 -3
  59. data/test/rails_root/script/generate +0 -3
data/test/test_helper.rb CHANGED
@@ -1,31 +1,31 @@
1
+ # Load the latest minitest
2
+ require 'rubygems'
3
+ gem 'minitest'
4
+
1
5
  # Load the environment
2
6
  ENV['RAILS_ENV'] = 'test'
3
- rails_root = File.dirname(__FILE__) + '/rails_root'
4
- require "#{rails_root}/config/environment.rb"
7
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
8
 
6
9
  # Load the testing framework
7
- require 'test_help'
8
- require 'flexmock/test_unit'
9
- require "authlogic/test_case"
10
+ require 'minitest/autorun'
11
+ require 'rails/test_help'
12
+ require 'authlogic/test_case'
13
+ require 'override'
14
+
15
+ if defined?(MiniTest::Unit::TestCase)
16
+ MiniTest::Unit::TestCase.class_eval do
17
+ # Mix Authlogic::TestCase into MiniTest to make activate_authlogic and controller available
18
+ include Authlogic::TestCase
19
+ # Mix Override in because it's just stubbing and expectations that feel like MiniTest
20
+ include Override
21
+ end
22
+ end
10
23
 
11
- silence_warnings { RAILS_ENV = ENV['RAILS_ENV'] }
24
+ Rails.backtrace_cleaner.remove_silencers!
12
25
 
13
26
  # Run the migrations
14
27
  ActiveRecord::Migration.verbose = false
15
- ActiveRecord::Migrator.migrate("#{RAILS_ROOT}/db/migrate")
16
-
17
- # Setup the fixtures path
18
-
19
- class ActiveSupport::TestCase #:nodoc:
20
- self.fixture_path = File.join(File.dirname(__FILE__), "fixtures")
21
- self.use_transactional_fixtures = false
22
- self.use_instantiated_fixtures = false
23
- self.pre_loaded_fixtures = false
24
-
25
- fixtures :all
26
- setup :activate_authlogic
27
-
28
- end
28
+ ActiveRecord::Migrator.migrate("#{Rails.root}/db/migrate")
29
29
 
30
30
  # --- Sample valid cookie hash generated with the code below
31
31
  # cookie_hash = {'fbs_233423200151' => 'access_token=233423200151|6892d62675cd952ade8b3f9b-6184456410|xrNaOlTCUF0QFZrJCHmVWzTb5Mk.&expires=0&secret=339a00cdafe6959c3caa1b8004e5f8db&session_key=6892d62675cd952ade8b3f9b-6184456410&sig=19d3c9ccb5b5a55d680ed1cf18698f57&uid=6184456410'}
@@ -1,182 +1,238 @@
1
- require File.expand_path( '../../test_helper.rb', File.dirname(__FILE__) )
1
+ require File.expand_path('../../../test_helper', __FILE__)
2
+ require 'koala'
2
3
 
3
- class AuthlogicFacebookShim::Adapters::KoalaAdapterTest < ActiveSupport::TestCase
4
+ describe AuthlogicFacebookShim::Adapters::KoalaAdapter do
4
5
 
5
- setup :activate_authlogic
6
+ before do
7
+ activate_authlogic
8
+
9
+ @user_info = {
10
+ 'session_key' => 'mocksessionkey',
11
+ 'sig' => 'cbd80b97f124bf392f76e2ee61168990',
12
+ 'secret' => 'mocksecret',
13
+ 'expires' => '0',
14
+ 'uid' => 'mockuid',
15
+ 'access_token' => 'mockaccesstoken'
16
+ }
17
+
18
+ @signed_user_info = {
19
+ "algorithm" => "HMAC-SHA256",
20
+ "code" => "mockcode",
21
+ "issued_at" => 1323717457,
22
+ "expires" => "4880",
23
+ "user_id" => "mockuserid",
24
+ "access_token" => "mockaccesstoken",
25
+ }
26
+
27
+ @mock_cookies = MockCookieJar.new
28
+ override controller, :cookies => @mock_cookies
29
+
30
+ @session = UserSession.new
31
+ override @session, :facebook_app_id => 'mockappid'
32
+ override @session, :facebook_api_key => 'mockapikey'
33
+ override @session, :facebook_secret_key => 'mocksecret'
34
+
35
+ @oauth = MiniTest::Mock.new
36
+ override Koala::Facebook::OAuth, :new => @oauth
37
+ end
6
38
 
7
- context "Adapters::KoalaAdapter" do
8
- setup do
9
- @user_info = {
10
- 'session_key' => 'mocksessionkey',
11
- 'expires' => '0',
12
- 'uid' => 'mockuid',
13
- 'sig' => 'cbd80b97f124bf392f76e2ee61168990',
14
- 'secret' => 'mocksecret',
15
- 'access_token' => 'mockaccesstoken'
16
- }
17
- @mock_cookies = MockCookieJar.new
18
- @mock_cookies['fbs_mockappid'] = {:value => 'access_token=mockaccesstoken&expires=0&secret=mocksecret&session_key=mocksessionkey&sig=cbd80b97f124bf392f76e2ee61168990&uid=mockuid'}
19
- @session = flexmock(UserSession.new)
20
- @controller = flexmock('Controller')
21
-
22
- @session.should_receive(:facebook_app_id).and_return('mockappid').by_default
23
- @session.should_receive(:facebook_api_key).and_return('mockapikey').by_default
24
- @session.should_receive(:facebook_secret_key).and_return('mocksecret').by_default
25
- @session.should_receive(:controller).and_return(@controller).by_default
26
- @controller.should_receive(:cookies).and_return(@mock_cookies).by_default
39
+ describe "setup - for my own sanity" do
40
+
41
+ it "should set the controller" do
42
+ @session.send(:controller).must_equal controller
27
43
  end
28
-
29
- context "setup - for my own sanity" do
44
+
45
+ it "should set the cookies" do
46
+ @session.send(:controller).cookies.must_equal @mock_cookies
47
+ end
48
+
49
+ it "should set the facebook_app_id" do
50
+ @session.facebook_app_id.must_equal 'mockappid'
51
+ end
52
+
53
+ it "should set the facebook_secret_key" do
54
+ @session.facebook_secret_key.must_equal 'mocksecret'
55
+ end
56
+
57
+ it "should set the facebook_api_key" do
58
+ @session.facebook_api_key.must_equal 'mockapikey'
59
+ end
60
+
61
+ end
62
+
63
+ describe "facebook_session" do
64
+
65
+ describe "with an unsigned facebook cookie" do
66
+
67
+ describe "and koala support for get_user_info_from_cookie" do
30
68
 
31
- should "set the controller" do
32
- assert_equal @controller, @session.controller
33
- end
69
+ before do
70
+ @oauth.expect :respond_to?, :true, [:get_user_info_from_cookie]
71
+ @oauth.expect :get_user_info_from_cookie, @user_info, [@mock_cookies]
72
+ end
73
+
74
+ it "should return a session_key" do
75
+ @session.facebook_session.session_key.must_equal 'mocksessionkey'
76
+ end
77
+
78
+ it "should return a uid" do
79
+ @session.facebook_session.uid.must_equal 'mockuid'
80
+ end
81
+
82
+ it "should return a secret" do
83
+ @session.facebook_session.secret.must_equal 'mocksecret'
84
+ end
85
+
86
+ it "should return a sig" do
87
+ @session.facebook_session.sig.must_equal 'cbd80b97f124bf392f76e2ee61168990'
88
+ end
89
+
90
+ it "should return an access_token" do
91
+ @session.facebook_session.access_token.must_equal 'mockaccesstoken'
92
+ end
34
93
 
35
- should "set the cookies" do
36
- assert_equal @mock_cookies, @session.controller.cookies
37
94
  end
95
+
96
+ describe "with previous koala api" do
97
+
98
+ it "should get user info with the get_user_from_cookie method" do
99
+ @oauth = MiniTest::Mock.new
100
+
101
+ override Koala::Facebook::OAuth, :new => @oauth
102
+
103
+ @oauth.expect :respond_to?, false, [:get_user_info_from_cookie]
104
+ @oauth.expect :get_user_from_cookie, @user_info, [@mock_cookies]
105
+
106
+ @session.facebook_session.session_key.must_equal 'mocksessionkey'
107
+ end
38
108
 
39
- should "set the facebook_app_id" do
40
- assert_equal 'mockappid', @session.facebook_app_id
41
109
  end
110
+
111
+ end
112
+
113
+ describe "with an signed facebook cookie" do
114
+
115
+ describe "and koala support for get_user_info_from_cookie" do
116
+
117
+ before do
118
+ @oauth.expect :respond_to?, :true, [:get_user_info_from_cookie]
119
+ @oauth.expect :get_user_info_from_cookie, @signed_user_info, [@mock_cookies]
120
+ end
121
+
122
+ it "should return a code" do
123
+ @session.facebook_session.code.must_equal 'mockcode'
124
+ end
125
+
126
+ it "should return a user_id" do
127
+ @session.facebook_session.user_id.must_equal 'mockuserid'
128
+ end
129
+
130
+ it "should return an access_token" do
131
+ @session.facebook_session.access_token.must_equal 'mockaccesstoken'
132
+ end
42
133
 
43
- should "set the facebook_secret_key" do
44
- assert_equal 'mocksecret', @session.facebook_secret_key
134
+ end
135
+
136
+ end
137
+
138
+ describe "with no valid facebook cookie" do
139
+
140
+ before do
141
+ @oauth.expect :respond_to?, :true, [:get_user_info_from_cookie]
142
+ @oauth.expect :get_user_info_from_cookie, nil, [@mock_cookies]
143
+ end
144
+
145
+ it "should return nil" do
146
+ @session.facebook_session.must_be_nil
45
147
  end
46
148
 
47
- should "set the facebook_api_key" do
48
- assert_equal 'mockapikey', @session.facebook_api_key
149
+ end
150
+
151
+ end
152
+
153
+ describe "facebook_session?" do
154
+
155
+ describe "with a valid facebook session" do
156
+
157
+ before do
158
+ @oauth.expect :respond_to?, :true, [:get_user_info_from_cookie]
159
+ override @oauth, :get_user_info_from_cookie => @signed_user_info
160
+ end
161
+
162
+ it "should be true" do
163
+ @session.facebook_session?.must_equal true
49
164
  end
50
165
 
51
166
  end
52
-
53
- context "facebook_session" do
54
-
55
- context "with a valid facebook cookie" do
56
-
57
- context "and koala support for get_user_info_from_cookie" do
58
-
59
- should "return a session_key" do
60
- assert_equal 'mocksessionkey', @session.facebook_session.session_key
61
- end
62
-
63
- should "return a uid" do
64
- assert_equal 'mockuid', @session.facebook_session.uid
65
- end
66
-
67
- should "return a secret" do
68
- assert_equal 'mocksecret', @session.facebook_session.secret
69
- end
70
-
71
- should "return a sig" do
72
- assert_equal 'cbd80b97f124bf392f76e2ee61168990', @session.facebook_session.sig
73
- end
74
-
75
- should "return an access_token" do
76
- assert_equal 'mockaccesstoken', @session.facebook_session.access_token
77
- end
78
-
79
- end
80
-
81
- context "with previous koala api" do
82
-
83
- should "get user info with the get_user_from_cookie method" do
84
- @oauth = flexmock('oauth')
85
- flexmock(Koala::Facebook::OAuth).should_receive(:new).and_return(@oauth).once
86
- @oauth.should_receive(:respond_to?).with(:get_user_info_from_cookie).and_return(false).once
87
- @oauth.should_receive(:get_user_from_cookie).with(@mock_cookies).and_return(@user_info).once
88
-
89
- assert_equal 'mocksessionkey', @session.facebook_session.session_key
90
- end
91
-
92
- end
93
-
167
+
168
+ describe "without a valid facebook session" do
169
+
170
+ before do
171
+ override @oauth, :get_user_info_from_cookie => nil
94
172
  end
95
-
96
- context "with no valid facebook cookie" do
97
-
98
- should "return nil" do
99
- @session.should_receive('facebook_app_id').and_return(nil).once
100
- assert_nil @session.facebook_session
101
- end
102
-
173
+
174
+ it "should be false" do
175
+ @session.facebook_session?.must_equal false
103
176
  end
104
177
 
105
178
  end
106
179
 
107
- context "facebook_session?" do
108
-
109
- context "with a valid facebook session" do
180
+ end
181
+
182
+ describe "facebook_user" do
183
+
184
+ describe "with a valid facebook session" do
110
185
 
111
- should "be true" do
112
- assert @session.facebook_session?
113
- end
186
+ before do
187
+ @graph_api = MiniTest::Mock.new
188
+ graph_api = Koala::Facebook.const_defined?(:API) ? Koala::Facebook::API : Koala::Facebook::GraphAPI
189
+ override graph_api, :new => @graph_api
190
+
191
+ facebook_session = MiniTest::Mock.new
192
+ access_token = MiniTest::Mock.new
193
+ facebook_session.expect :access_token, access_token
114
194
 
195
+ override @session, :facebook_session => facebook_session
196
+ override @session, :facebook_session? => true
197
+
198
+ @user = {
199
+ "id" => "mockid",
200
+ "name" => "Full name",
201
+ "first_name" => "First name",
202
+ "last_name" => "Last name"
203
+ }
204
+
205
+ @graph_api.expect :get_object, @user, ['me']
115
206
  end
116
207
 
117
- context "without a valid facebook session" do
118
-
119
- should "return nil" do
120
- @session.should_receive('facebook_app_id').and_return(nil).once
121
- assert_equal false, @session.facebook_session?
122
- end
123
-
208
+ it "should return an OpenStruct" do
209
+ @session.facebook_user.must_be_instance_of OpenStruct
124
210
  end
125
211
 
212
+ it "should return the user details" do
213
+ @session.facebook_user.name.must_equal 'Full name'
214
+ @session.facebook_user.first_name.must_equal 'First name'
215
+ @session.facebook_user.last_name.must_equal 'Last name'
216
+ end
217
+
218
+ it "should return the facebook id as uid" do
219
+ @session.facebook_user.uid.must_equal 'mockid'
220
+ end
221
+
126
222
  end
127
-
128
- context "facebook_user" do
223
+
224
+ describe "with no valid facebook session" do
129
225
 
130
- context "with a valid facebook session" do
131
-
132
- setup do
133
- @user = {
134
- "id" => "mockid",
135
- "name" => "Full name",
136
- "first_name" => "First name",
137
- "last_name" => "Last name"
138
- }
139
-
140
- @access_token = flexmock('access token')
141
- @session.should_receive('facebook_session.access_token').and_return(@access_token).by_default
142
- @session.should_receive('facebook_session?').and_return(true).by_default
143
-
144
- @graph_api = flexmock('graph api', :get_object => @user)
145
- flexmock(Koala::Facebook::GraphAPI).should_receive(:new).and_return(@graph_api).by_default
146
- end
147
-
148
- should "initialize the graph api" do
149
- flexmock(Koala::Facebook::GraphAPI).should_receive(:new).with(@access_token).and_return(@graph_api).once
150
- @session.facebook_user
151
- end
152
-
153
- should "return an OpenStruct" do
154
- assert @session.facebook_user.is_a?(OpenStruct)
155
- end
156
-
157
- should "return the user details" do
158
- assert_equal 'Full name', @session.facebook_user.name
159
- assert_equal 'First name', @session.facebook_user.first_name
160
- assert_equal 'Last name', @session.facebook_user.last_name
161
- end
162
-
163
- should "return the facebook id as uid" do
164
- assert_equal 'mockid', @session.facebook_user.uid
165
- end
166
-
226
+ before do
227
+ override @session, :facebook_session? => false
167
228
  end
168
-
169
- context "with no valid facebook session" do
170
-
171
- should "return nil" do
172
- @session.should_receive('facebook_session?').and_return(false).once
173
- assert_nil @session.facebook_user
174
- end
175
229
 
230
+ it "should return nil" do
231
+ @session.facebook_user.must_be_nil
176
232
  end
177
233
 
178
234
  end
179
235
 
180
236
  end
181
-
237
+
182
238
  end