mmangino-facebooker 1.0.6 → 1.0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +3 -0
- data/generators/xd_receiver/templates/xd_receiver.html +10 -0
- data/generators/xd_receiver/xd_receiver_generator.rb +9 -0
- data/lib/facebooker/models/user.rb +1 -1
- data/lib/facebooker/rails/controller.rb +24 -4
- data/lib/facebooker/rails/helpers/fb_connect.rb +34 -0
- data/lib/facebooker/rails/helpers.rb +31 -4
- data/test/publisher_test.rb +1 -0
- data/test/rails_integration_test.rb +108 -13
- metadata +4 -1
data/Manifest.txt
CHANGED
@@ -37,6 +37,8 @@ generators/facebook_scaffold/templates/view_new.fbml.erb
|
|
37
37
|
generators/facebook_scaffold/templates/view_new.html.erb
|
38
38
|
generators/facebook_scaffold/templates/view_show.fbml.erb
|
39
39
|
generators/facebook_scaffold/templates/view_show.html.erb
|
40
|
+
generators/xd_receiver/xd_receiver_generator.rb
|
41
|
+
generators/xd_receiver/templates/xd_receiver.html
|
40
42
|
init.rb
|
41
43
|
install.rb
|
42
44
|
lib/facebooker.rb
|
@@ -75,6 +77,7 @@ lib/facebooker/rails/facebook_request_fix.rb
|
|
75
77
|
lib/facebooker/rails/facebook_session_handling.rb
|
76
78
|
lib/facebooker/rails/facebook_url_rewriting.rb
|
77
79
|
lib/facebooker/rails/helpers.rb
|
80
|
+
lib/facebooker/rails/helpers/fb_connect.rb
|
78
81
|
lib/facebooker/rails/profile_publisher_extensions.rb
|
79
82
|
lib/facebooker/rails/publisher.rb
|
80
83
|
lib/facebooker/rails/routing.rb
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" >
|
4
|
+
<head>
|
5
|
+
<title>Cross-Domain Receiver Page</title>
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/XdCommReceiver.debug.js" type="text/javascript"></script>
|
9
|
+
</body>
|
10
|
+
</html>
|
@@ -10,7 +10,7 @@ module Facebooker
|
|
10
10
|
include Model
|
11
11
|
attr_accessor :message, :time, :status_id
|
12
12
|
end
|
13
|
-
FIELDS = [:status, :political, :pic_small, :name, :quotes, :is_app_user, :tv, :profile_update_time, :meeting_sex, :hs_info, :timezone, :relationship_status, :hometown_location, :about_me, :wall_count, :significant_other_id, :pic_big, :music, :uid, :work_history, :sex, :religion, :notes_count, :activities, :pic_square, :movies, :has_added_app, :education_history, :birthday, :first_name, :meeting_for, :last_name, :interests, :current_location, :pic, :books, :affiliations, :locale, :profile_url]
|
13
|
+
FIELDS = [:status, :political, :pic_small, :name, :quotes, :is_app_user, :tv, :profile_update_time, :meeting_sex, :hs_info, :timezone, :relationship_status, :hometown_location, :about_me, :wall_count, :significant_other_id, :pic_big, :music, :uid, :work_history, :sex, :religion, :notes_count, :activities, :pic_square, :movies, :has_added_app, :education_history, :birthday, :first_name, :meeting_for, :last_name, :interests, :current_location, :pic, :books, :affiliations, :locale, :profile_url, :proxied_email]
|
14
14
|
STANDARD_FIELDS = [:uid, :first_name, :last_name, :name, :timezone, :birthday, :sex, :affiliations, :locale, :profile_url]
|
15
15
|
attr_accessor :id, :session
|
16
16
|
populating_attr_accessor *FIELDS
|
@@ -23,8 +23,7 @@ module Facebooker
|
|
23
23
|
|
24
24
|
|
25
25
|
def set_facebook_session
|
26
|
-
|
27
|
-
returning session_set = session_already_secured? || secure_with_facebook_params! ||secure_with_token! do
|
26
|
+
returning session_set = session_already_secured? || secure_with_facebook_params! || secure_with_cookies! || secure_with_token! do
|
28
27
|
if session_set
|
29
28
|
capture_facebook_friends_if_available!
|
30
29
|
Session.current = facebook_session
|
@@ -72,7 +71,28 @@ module Facebooker
|
|
72
71
|
!session[:facebook_session].blank? && (params[:fb_sig_session_key].blank? || session[:facebook_session].session_key == facebook_params[:session_key])
|
73
72
|
end
|
74
73
|
end
|
75
|
-
|
74
|
+
|
75
|
+
def secure_with_cookies!
|
76
|
+
api_key = ENV['FACEBOOK_API_KEY']
|
77
|
+
prefix = api_key+"_"
|
78
|
+
parsed = {}
|
79
|
+
|
80
|
+
#find all str s.t. !cookies[key_str].nil, set param[str] = cookies[key_str]
|
81
|
+
cookies.keys.select{|k| k[0, prefix.size] == prefix}.each{ |k|
|
82
|
+
parsed[k[prefix.size,k.size]] = cookies[k]
|
83
|
+
}
|
84
|
+
|
85
|
+
#returning gracefully if the cookies aren't set or have expired
|
86
|
+
return unless parsed['session_key'] && parsed['user'] && parsed['expires'] && parsed['ss']
|
87
|
+
return unless Time.at(parsed['expires'].to_f) > Time.now
|
88
|
+
|
89
|
+
#if we have the unexpired cookies, we'll throw an exception if the sig doesn't verify
|
90
|
+
verify_signature(parsed,cookies[api_key])
|
91
|
+
|
92
|
+
@facebook_session = new_facebook_session
|
93
|
+
@facebook_session.secure_with!(parsed['session_key'],parsed['user'],parsed['expires'],parsed['ss'])
|
94
|
+
end
|
95
|
+
|
76
96
|
def secure_with_token!
|
77
97
|
if params['auth_token']
|
78
98
|
@facebook_session = new_facebook_session
|
@@ -142,7 +162,7 @@ module Facebooker
|
|
142
162
|
raw_string = facebook_sig_params.map{ |*args| args.join('=') }.sort.join
|
143
163
|
actual_sig = Digest::MD5.hexdigest([raw_string, Facebooker::Session.secret_key].join)
|
144
164
|
raise Facebooker::Session::IncorrectSignature if actual_sig != expected_signature
|
145
|
-
raise Facebooker::Session::SignatureTooOld if Time.at(facebook_sig_params['time'].to_f) < earliest_valid_session
|
165
|
+
raise Facebooker::Session::SignatureTooOld if facebook_sig_params['time'] && Time.at(facebook_sig_params['time'].to_f) < earliest_valid_session
|
146
166
|
true
|
147
167
|
end
|
148
168
|
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Facebooker
|
2
|
+
module Rails
|
3
|
+
module Helpers
|
4
|
+
module FbConnect
|
5
|
+
|
6
|
+
def fb_connect_javascript_tag
|
7
|
+
javascript_include_tag "http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php"
|
8
|
+
end
|
9
|
+
|
10
|
+
def init_fb_connect(*required_features)
|
11
|
+
init_string = "FB.Facebook.init('#{Facebooker.api_key}','/xd_receiver.html');"
|
12
|
+
unless required_features.blank?
|
13
|
+
init_string = <<-FBML
|
14
|
+
Element.observe(window,'load', function() {
|
15
|
+
FB_RequireFeatures(#{required_features.to_json}, function() {
|
16
|
+
#{init_string}
|
17
|
+
});
|
18
|
+
});
|
19
|
+
FBML
|
20
|
+
end
|
21
|
+
javascript_tag init_string
|
22
|
+
end
|
23
|
+
|
24
|
+
def fb_login_button(callback=nil)
|
25
|
+
content_tag("fb:login-button",nil,(callback.nil? ? {} : {:onlogin=>callback}))
|
26
|
+
end
|
27
|
+
|
28
|
+
def fb_unconnected_friends_count
|
29
|
+
content_tag "fb:unconnected-friends-count",nil
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -8,6 +8,7 @@ module Facebooker
|
|
8
8
|
#
|
9
9
|
module Helpers
|
10
10
|
|
11
|
+
include Facebooker::Rails::Helpers::FbConnect
|
11
12
|
|
12
13
|
# Create an fb:dialog
|
13
14
|
# id must be a unique name e.g. "my_dialog"
|
@@ -196,7 +197,7 @@ module Facebooker
|
|
196
197
|
options.transform_keys!(FB_NAME_OPTION_KEYS_TO_TRANSFORM)
|
197
198
|
options.assert_valid_keys(FB_NAME_VALID_OPTION_KEYS)
|
198
199
|
options.merge!(:uid => cast_to_facebook_id(user))
|
199
|
-
|
200
|
+
content_tag("fb:name",nil, stringify_vals(options))
|
200
201
|
end
|
201
202
|
|
202
203
|
FB_NAME_OPTION_KEYS_TO_TRANSFORM = {:first_name_only => :firstnameonly,
|
@@ -217,7 +218,7 @@ module Facebooker
|
|
217
218
|
options.transform_keys!(FB_PRONOUN_OPTION_KEYS_TO_TRANSFORM)
|
218
219
|
options.assert_valid_keys(FB_PRONOUN_VALID_OPTION_KEYS)
|
219
220
|
options.merge!(:uid => cast_to_facebook_id(user))
|
220
|
-
|
221
|
+
content_tag("fb:pronoun",nil, stringify_vals(options))
|
221
222
|
end
|
222
223
|
|
223
224
|
FB_PRONOUN_OPTION_KEYS_TO_TRANSFORM = {:use_you => :useyou, :use_they => :usethey}
|
@@ -259,7 +260,7 @@ module Facebooker
|
|
259
260
|
options = options.dup
|
260
261
|
validate_fb_profile_pic_size(options)
|
261
262
|
options.merge!(:uid => cast_to_facebook_id(user))
|
262
|
-
|
263
|
+
content_tag("fb:profile-pic", nil,stringify_vals(options))
|
263
264
|
end
|
264
265
|
|
265
266
|
# Render an fb:photo tag.
|
@@ -271,7 +272,7 @@ module Facebooker
|
|
271
272
|
options.merge!(:pid => cast_to_photo_id(photo))
|
272
273
|
validate_fb_photo_size(options)
|
273
274
|
validate_fb_photo_align_value(options)
|
274
|
-
|
275
|
+
content_tag("fb:photo",nil, stringify_vals(options))
|
275
276
|
end
|
276
277
|
|
277
278
|
FB_PHOTO_VALID_OPTION_KEYS = [:uid, :size, :align]
|
@@ -544,6 +545,32 @@ module Facebooker
|
|
544
545
|
content_tag("fb:prompt-permission",message,args)
|
545
546
|
end
|
546
547
|
|
548
|
+
def fb_eventlink(eid)
|
549
|
+
content_tag "fb:eventlink",nil,:eid=>eid
|
550
|
+
end
|
551
|
+
|
552
|
+
def fb_grouplink(gid)
|
553
|
+
content_tag "fb:grouplink",nil,:gid=>gid
|
554
|
+
end
|
555
|
+
|
556
|
+
def fb_user_status(user,linked=true)
|
557
|
+
content_tag "fb:user-status",nil,stringify_vals(:uid=>cast_to_facebook_id(user), :linked=>linked)
|
558
|
+
end
|
559
|
+
|
560
|
+
def fb_share_button(url)
|
561
|
+
content_tag "fb:share-button",nil,:class=>"url",:href=>url
|
562
|
+
end
|
563
|
+
|
564
|
+
def fb_serverfbml(options={},&proc)
|
565
|
+
inner = capture(&proc)
|
566
|
+
concat(content_tag("fb:serverfbml",inner,options),&proc.binding)
|
567
|
+
end
|
568
|
+
|
569
|
+
def fb_container(options={},&proc)
|
570
|
+
inner = capture(&proc)
|
571
|
+
concat(content_tag("fb:container",inner,options),&proc.binding)
|
572
|
+
end
|
573
|
+
|
547
574
|
protected
|
548
575
|
|
549
576
|
def cast_to_facebook_id(object)
|
data/test/publisher_test.rb
CHANGED
@@ -6,6 +6,7 @@ require 'action_controller/test_process'
|
|
6
6
|
require 'active_record'
|
7
7
|
require File.dirname(__FILE__)+'/../init'
|
8
8
|
require 'facebooker/rails/controller'
|
9
|
+
require 'facebooker/rails/helpers/fb_connect'
|
9
10
|
require 'facebooker/rails/helpers'
|
10
11
|
require 'facebooker/rails/publisher'
|
11
12
|
|
@@ -3,6 +3,7 @@ begin
|
|
3
3
|
require 'action_controller'
|
4
4
|
require 'action_controller/test_process'
|
5
5
|
require 'facebooker/rails/controller'
|
6
|
+
require 'facebooker/rails/helpers/fb_connect'
|
6
7
|
require 'facebooker/rails/helpers'
|
7
8
|
require 'facebooker/rails/facebook_form_builder'
|
8
9
|
require File.dirname(__FILE__)+'/../init'
|
@@ -363,6 +364,32 @@ class RailsIntegrationTest < Test::Unit::TestCase
|
|
363
364
|
get :index, modified_params
|
364
365
|
end
|
365
366
|
|
367
|
+
def test_session_secured_with_auth_token_if_cookies_expired
|
368
|
+
auth_token = 'ohaiauthtokenhere111'
|
369
|
+
modified_params = example_rails_params_including_fb
|
370
|
+
modified_params.delete('fb_sig_session_key')
|
371
|
+
modified_params['auth_token'] = auth_token
|
372
|
+
session_mock = flexmock(session = Facebooker::Session.create(ENV['FACEBOOK_API_KEY'], ENV['FACEBOOK_SECRET_KEY']))
|
373
|
+
session_params = { 'session_key' => '123', 'uid' => '321' }
|
374
|
+
session_mock.should_receive(:post).with('facebook.auth.getSession', :auth_token => auth_token).once.and_return(session_params).ordered
|
375
|
+
flexmock(@controller).should_receive(:new_facebook_session).once.and_return(session).ordered
|
376
|
+
expired_cookie_hash_for_auth.each {|k,v| @request.cookies[ENV['FACEBOOK_API_KEY']+k] = CGI::Cookie.new(ENV['FACEBOOK_API_KEY']+k,v)}
|
377
|
+
get :index, modified_params
|
378
|
+
assert_equal(321, @controller.facebook_session.user.id)
|
379
|
+
end
|
380
|
+
|
381
|
+
def test_session_can_be_secured_with_cookies
|
382
|
+
cookie_hash_for_auth.each {|k,v| @request.cookies[ENV['FACEBOOK_API_KEY']+k] = CGI::Cookie.new(ENV['FACEBOOK_API_KEY']+k,v)}
|
383
|
+
get :index, example_rails_params_for_fb_connect
|
384
|
+
assert_equal(77777, @controller.facebook_session.user.id)
|
385
|
+
end
|
386
|
+
|
387
|
+
def test_session_does_NOT_secure_with_expired_cookies
|
388
|
+
expired_cookie_hash_for_auth.each {|k,v| @request.cookies[ENV['FACEBOOK_API_KEY']+k] = CGI::Cookie.new(ENV['FACEBOOK_API_KEY']+k,v)}
|
389
|
+
get :index, example_rails_params_for_fb_connect
|
390
|
+
assert_nil(@controller.facebook_session)
|
391
|
+
end
|
392
|
+
|
366
393
|
def test_user_friends_can_be_populated_from_facebook_params_if_available
|
367
394
|
get :index, example_rails_params_including_fb
|
368
395
|
assert_not_nil(friends = @controller.facebook_session.user.friends)
|
@@ -436,6 +463,18 @@ class RailsIntegrationTest < Test::Unit::TestCase
|
|
436
463
|
end
|
437
464
|
|
438
465
|
private
|
466
|
+
def example_rails_params_for_fb_connect
|
467
|
+
{"action"=>"index", "controller"=>"controller_which_requires_facebook_authentication"}
|
468
|
+
end
|
469
|
+
|
470
|
+
def expired_cookie_hash_for_auth
|
471
|
+
{"_ss" => "not_used", "_session_key"=> "whatever", "_user"=>"77777", "_expires"=>"#{1.day.ago.to_i}"}
|
472
|
+
end
|
473
|
+
|
474
|
+
def cookie_hash_for_auth
|
475
|
+
{"_ss" => "not_used", "_session_key"=> "whatever", "_user"=>"77777", "_expires"=>"#{1.day.from_now.to_i}"}
|
476
|
+
end
|
477
|
+
|
439
478
|
def example_rails_params_including_fb_for_user_not_logged_into_application
|
440
479
|
{"fb_sig_time"=>"1186588275.5988", "fb_sig"=>"7371a6400329b229f800a5ecafe03b0a", "action"=>"index", "fb_sig_in_canvas"=>"1", "controller"=>"controller_which_requires_facebook_authentication", "fb_sig_added"=>"0", "fb_sig_api_key"=>"b6c9c857ac543ca806f4d3187cd05e09"}
|
441
480
|
end
|
@@ -490,6 +529,7 @@ class RailsHelperTest < Test::Unit::TestCase
|
|
490
529
|
include ActionView::Helpers::CaptureHelper
|
491
530
|
include ActionView::Helpers::TagHelper
|
492
531
|
include ActionView::Helpers::AssetTagHelper
|
532
|
+
include ActionView::Helpers::JavaScriptHelper
|
493
533
|
include Facebooker::Rails::Helpers
|
494
534
|
attr_accessor :flash, :output_buffer
|
495
535
|
def initialize
|
@@ -524,11 +564,11 @@ class RailsHelperTest < Test::Unit::TestCase
|
|
524
564
|
end
|
525
565
|
|
526
566
|
def test_fb_profile_pic
|
527
|
-
assert_equal "<fb:profile-pic uid=\"1234\"
|
567
|
+
assert_equal "<fb:profile-pic uid=\"1234\"></fb:profile-pic>", @h.fb_profile_pic("1234")
|
528
568
|
end
|
529
569
|
|
530
570
|
def test_fb_profile_pic_with_valid_size
|
531
|
-
assert_equal "<fb:profile-pic size=\"small\" uid=\"1234\"
|
571
|
+
assert_equal "<fb:profile-pic size=\"small\" uid=\"1234\"></fb:profile-pic>", @h.fb_profile_pic("1234", :size => :small)
|
532
572
|
end
|
533
573
|
|
534
574
|
def test_fb_profile_pic_with_invalid_size
|
@@ -536,12 +576,12 @@ class RailsHelperTest < Test::Unit::TestCase
|
|
536
576
|
end
|
537
577
|
|
538
578
|
def test_fb_photo
|
539
|
-
assert_equal "<fb:photo pid=\"1234\"
|
579
|
+
assert_equal "<fb:photo pid=\"1234\"></fb:photo>",@h.fb_photo("1234")
|
540
580
|
end
|
541
581
|
|
542
582
|
def test_fb_photo_with_object_responding_to_photo_id
|
543
583
|
photo = flexmock("photo", :photo_id => "5678")
|
544
|
-
assert_equal "<fb:photo pid=\"5678\"
|
584
|
+
assert_equal "<fb:photo pid=\"5678\"></fb:photo>", @h.fb_photo(photo)
|
545
585
|
end
|
546
586
|
|
547
587
|
def test_fb_photo_with_invalid_size
|
@@ -557,14 +597,14 @@ class RailsHelperTest < Test::Unit::TestCase
|
|
557
597
|
end
|
558
598
|
|
559
599
|
def test_fb_photo_with_valid_align_value
|
560
|
-
assert_equal "<fb:photo align=\"right\" pid=\"1234\"
|
600
|
+
assert_equal "<fb:photo align=\"right\" pid=\"1234\"></fb:photo>",@h.fb_photo("1234", :align => :right)
|
561
601
|
end
|
562
602
|
|
563
603
|
def test_fb_photo_with_class
|
564
|
-
assert_equal "<fb:photo class=\"picky\" pid=\"1234\"
|
604
|
+
assert_equal "<fb:photo class=\"picky\" pid=\"1234\"></fb:photo>",@h.fb_photo("1234", :class => :picky)
|
565
605
|
end
|
566
606
|
def test_fb_photo_with_style
|
567
|
-
assert_equal "<fb:photo pid=\"1234\" style=\"some=css;put=here;\"
|
607
|
+
assert_equal "<fb:photo pid=\"1234\" style=\"some=css;put=here;\"></fb:photo>",@h.fb_photo("1234", :style => "some=css;put=here;")
|
568
608
|
end
|
569
609
|
|
570
610
|
def test_fb_prompt_permission_valid_no_callback
|
@@ -593,16 +633,16 @@ class RailsHelperTest < Test::Unit::TestCase
|
|
593
633
|
end
|
594
634
|
|
595
635
|
def test_fb_name
|
596
|
-
assert_equal "<fb:name uid=\"1234\"
|
636
|
+
assert_equal "<fb:name uid=\"1234\"></fb:name>",@h.fb_name("1234")
|
597
637
|
end
|
598
638
|
|
599
639
|
def test_fb_name_with_transformed_key
|
600
|
-
assert_equal "<fb:name uid=\"1234\" useyou=\"true\"
|
640
|
+
assert_equal "<fb:name uid=\"1234\" useyou=\"true\"></fb:name>", @h.fb_name(1234, :use_you => true)
|
601
641
|
end
|
602
642
|
|
603
643
|
def test_fb_name_with_user_responding_to_facebook_id
|
604
644
|
user = flexmock("user", :facebook_id => "5678")
|
605
|
-
assert_equal "<fb:name uid=\"5678\"
|
645
|
+
assert_equal "<fb:name uid=\"5678\"></fb:name>", @h.fb_name(user)
|
606
646
|
end
|
607
647
|
|
608
648
|
def test_fb_name_with_invalid_key
|
@@ -698,16 +738,16 @@ class RailsHelperTest < Test::Unit::TestCase
|
|
698
738
|
end
|
699
739
|
|
700
740
|
def test_fb_pronoun
|
701
|
-
assert_equal "<fb:pronoun uid=\"1234\"
|
741
|
+
assert_equal "<fb:pronoun uid=\"1234\"></fb:pronoun>", @h.fb_pronoun(1234)
|
702
742
|
end
|
703
743
|
|
704
744
|
def test_fb_pronoun_with_transformed_key
|
705
|
-
assert_equal "<fb:pronoun uid=\"1234\" usethey=\"true\"
|
745
|
+
assert_equal "<fb:pronoun uid=\"1234\" usethey=\"true\"></fb:pronoun>", @h.fb_pronoun(1234, :use_they => true)
|
706
746
|
end
|
707
747
|
|
708
748
|
def test_fb_pronoun_with_user_responding_to_facebook_id
|
709
749
|
user = flexmock("user", :facebook_id => "5678")
|
710
|
-
assert_equal "<fb:pronoun uid=\"5678\"
|
750
|
+
assert_equal "<fb:pronoun uid=\"5678\"></fb:pronoun>", @h.fb_pronoun(user)
|
711
751
|
end
|
712
752
|
|
713
753
|
def test_fb_pronoun_with_invalid_key
|
@@ -880,6 +920,58 @@ class RailsHelperTest < Test::Unit::TestCase
|
|
880
920
|
end
|
881
921
|
assert_equal "<fb:narrow>narrow profile content</fb:narrow>", @h.output_buffer
|
882
922
|
end
|
923
|
+
|
924
|
+
def test_fb_login_button
|
925
|
+
assert_equal "<fb:login-button onlogin=\"somejs\"></fb:login-button>",@h.fb_login_button("somejs")
|
926
|
+
end
|
927
|
+
|
928
|
+
def test_init_fb_connect_no_features
|
929
|
+
assert ! @h.init_fb_connect.match(/XFBML/)
|
930
|
+
end
|
931
|
+
|
932
|
+
def test_init_fb_connect_with_features
|
933
|
+
assert @h.init_fb_connect("XFBML").match(/XFBML/)
|
934
|
+
end
|
935
|
+
|
936
|
+
def test_fb_connect_javascript_tag
|
937
|
+
assert_equal "<script src=\"http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php\" type=\"text/javascript\"></script>",
|
938
|
+
@h.fb_connect_javascript_tag
|
939
|
+
end
|
940
|
+
|
941
|
+
def test_fb_container
|
942
|
+
@h.expects(:capture).returns("Inner Stuff")
|
943
|
+
@h.fb_container(:condition=>"somejs") do
|
944
|
+
end
|
945
|
+
assert_equal "<fb:container condition=\"somejs\">Inner Stuff</fb:container>",@h.output_buffer
|
946
|
+
end
|
947
|
+
|
948
|
+
def test_fb_eventlink
|
949
|
+
assert_equal '<fb:eventlink eid="21150032416"></fb:eventlink>',@h.fb_eventlink("21150032416")
|
950
|
+
end
|
951
|
+
|
952
|
+
def test_fb_grouplink
|
953
|
+
assert_equal '<fb:grouplink gid="2541896821"></fb:grouplink>',@h.fb_grouplink("2541896821")
|
954
|
+
end
|
955
|
+
|
956
|
+
def test_fb_serverfbml
|
957
|
+
@h.expects(:capture).returns("Inner Stuff")
|
958
|
+
@h.fb_serverfbml(:condition=>"somejs") do
|
959
|
+
end
|
960
|
+
assert_equal "<fb:serverfbml condition=\"somejs\">Inner Stuff</fb:serverfbml>",@h.output_buffer
|
961
|
+
end
|
962
|
+
|
963
|
+
def test_fb_share_button
|
964
|
+
assert_equal "<fb:share-button class=\"url\" href=\"http://www.elevatedrails.com\"></fb:share-button>",@h.fb_share_button("http://www.elevatedrails.com")
|
965
|
+
end
|
966
|
+
|
967
|
+
def test_fb_unconnected_friends_count_without_condition
|
968
|
+
assert_equal "<fb:unconnected-friends-count></fb:unconnected-friends-count>",@h.fb_unconnected_friends_count
|
969
|
+
end
|
970
|
+
|
971
|
+
def test_fb_user_status
|
972
|
+
user=flexmock("user", :facebook_id => "5678")
|
973
|
+
assert_equal '<fb:user-status linked="false" uid="5678"></fb:user-status>',@h.fb_user_status(user,false)
|
974
|
+
end
|
883
975
|
end
|
884
976
|
class TestModel
|
885
977
|
attr_accessor :name,:facebook_id
|
@@ -958,6 +1050,8 @@ class RailsFacebookFormbuilderTest < Test::Unit::TestCase
|
|
958
1050
|
def test_multi_friend_input
|
959
1051
|
assert_equal "<fb:editor-custom label=\"Friends\"><fb:multi-friend-input></fb:multi-friend-input></fb:editor-custom>",@form_builder.multi_friend_input
|
960
1052
|
end
|
1053
|
+
|
1054
|
+
|
961
1055
|
end
|
962
1056
|
|
963
1057
|
class RailsPrettyErrorsTest < Test::Unit::TestCase
|
@@ -1118,6 +1212,7 @@ class RailsUrlHelperExtensionsTest < Test::Unit::TestCase
|
|
1118
1212
|
def test_link_to_if_with_false
|
1119
1213
|
assert_equal @label, @u.link_to_if(false,@label,@url)
|
1120
1214
|
end
|
1215
|
+
|
1121
1216
|
end
|
1122
1217
|
|
1123
1218
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mmangino-facebooker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chad Fowler
|
@@ -79,6 +79,8 @@ files:
|
|
79
79
|
- generators/facebook_scaffold/templates/view_new.html.erb
|
80
80
|
- generators/facebook_scaffold/templates/view_show.fbml.erb
|
81
81
|
- generators/facebook_scaffold/templates/view_show.html.erb
|
82
|
+
- generators/xd_receiver/xd_receiver_generator.rb
|
83
|
+
- generators/xd_receiver/templates/xd_receiver.html
|
82
84
|
- init.rb
|
83
85
|
- install.rb
|
84
86
|
- lib/facebooker.rb
|
@@ -117,6 +119,7 @@ files:
|
|
117
119
|
- lib/facebooker/rails/facebook_session_handling.rb
|
118
120
|
- lib/facebooker/rails/facebook_url_rewriting.rb
|
119
121
|
- lib/facebooker/rails/helpers.rb
|
122
|
+
- lib/facebooker/rails/helpers/fb_connect.rb
|
120
123
|
- lib/facebooker/rails/profile_publisher_extensions.rb
|
121
124
|
- lib/facebooker/rails/publisher.rb
|
122
125
|
- lib/facebooker/rails/routing.rb
|