djanowski-facebooker 1.0.1
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.
- data/CHANGELOG.txt +0 -0
- data/COPYING +19 -0
- data/History.txt +16 -0
- data/Manifest.txt +110 -0
- data/README +46 -0
- data/README.txt +81 -0
- data/Rakefile +76 -0
- data/TODO.txt +10 -0
- data/generators/facebook/facebook_generator.rb +14 -0
- data/generators/facebook/templates/config/facebooker.yml +41 -0
- data/generators/facebook/templates/public/javascripts/facebooker.js +106 -0
- data/generators/facebook_controller/USAGE +33 -0
- data/generators/facebook_controller/facebook_controller_generator.rb +40 -0
- data/generators/facebook_controller/templates/controller.rb +7 -0
- data/generators/facebook_controller/templates/functional_test.rb +11 -0
- data/generators/facebook_controller/templates/helper.rb +2 -0
- data/generators/facebook_controller/templates/view.fbml.erb +2 -0
- data/generators/facebook_controller/templates/view.html.erb +2 -0
- data/generators/facebook_publisher/facebook_publisher_generator.rb +14 -0
- data/generators/facebook_publisher/templates/create_facebook_templates.rb +15 -0
- data/generators/facebook_publisher/templates/publisher.rb +3 -0
- data/generators/facebook_scaffold/USAGE +27 -0
- data/generators/facebook_scaffold/facebook_scaffold_generator.rb +118 -0
- data/generators/facebook_scaffold/templates/controller.rb +93 -0
- data/generators/facebook_scaffold/templates/facebook_style.css +2579 -0
- data/generators/facebook_scaffold/templates/functional_test.rb +89 -0
- data/generators/facebook_scaffold/templates/helper.rb +2 -0
- data/generators/facebook_scaffold/templates/layout.fbml.erb +6 -0
- data/generators/facebook_scaffold/templates/layout.html.erb +17 -0
- data/generators/facebook_scaffold/templates/style.css +74 -0
- data/generators/facebook_scaffold/templates/view_edit.fbml.erb +13 -0
- data/generators/facebook_scaffold/templates/view_edit.html.erb +18 -0
- data/generators/facebook_scaffold/templates/view_index.fbml.erb +24 -0
- data/generators/facebook_scaffold/templates/view_index.html.erb +24 -0
- data/generators/facebook_scaffold/templates/view_new.fbml.erb +12 -0
- data/generators/facebook_scaffold/templates/view_new.html.erb +17 -0
- data/generators/facebook_scaffold/templates/view_show.fbml.erb +10 -0
- data/generators/facebook_scaffold/templates/view_show.html.erb +10 -0
- data/generators/publisher/publisher_generator.rb +14 -0
- data/init.rb +54 -0
- data/install.rb +12 -0
- data/lib/facebooker/adapters/adapter_base.rb +87 -0
- data/lib/facebooker/adapters/bebo_adapter.rb +73 -0
- data/lib/facebooker/adapters/facebook_adapter.rb +48 -0
- data/lib/facebooker/admin.rb +28 -0
- data/lib/facebooker/batch_request.rb +44 -0
- data/lib/facebooker/data.rb +57 -0
- data/lib/facebooker/feed.rb +78 -0
- data/lib/facebooker/logging.rb +51 -0
- data/lib/facebooker/model.rb +123 -0
- data/lib/facebooker/models/affiliation.rb +10 -0
- data/lib/facebooker/models/album.rb +11 -0
- data/lib/facebooker/models/applicationproperties.rb +39 -0
- data/lib/facebooker/models/cookie.rb +10 -0
- data/lib/facebooker/models/education_info.rb +11 -0
- data/lib/facebooker/models/event.rb +26 -0
- data/lib/facebooker/models/friend_list.rb +14 -0
- data/lib/facebooker/models/group.rb +35 -0
- data/lib/facebooker/models/info_item.rb +10 -0
- data/lib/facebooker/models/info_section.rb +10 -0
- data/lib/facebooker/models/location.rb +8 -0
- data/lib/facebooker/models/notifications.rb +17 -0
- data/lib/facebooker/models/page.rb +27 -0
- data/lib/facebooker/models/photo.rb +10 -0
- data/lib/facebooker/models/tag.rb +12 -0
- data/lib/facebooker/models/user.rb +352 -0
- data/lib/facebooker/models/work_info.rb +9 -0
- data/lib/facebooker/parser.rb +540 -0
- data/lib/facebooker/rails/controller.rb +246 -0
- data/lib/facebooker/rails/facebook_asset_path.rb +18 -0
- data/lib/facebooker/rails/facebook_form_builder.rb +112 -0
- data/lib/facebooker/rails/facebook_pretty_errors.rb +14 -0
- data/lib/facebooker/rails/facebook_request_fix.rb +24 -0
- data/lib/facebooker/rails/facebook_session_handling.rb +69 -0
- data/lib/facebooker/rails/facebook_url_rewriting.rb +39 -0
- data/lib/facebooker/rails/helpers.rb +615 -0
- data/lib/facebooker/rails/profile_publisher_extensions.rb +42 -0
- data/lib/facebooker/rails/publisher.rb +492 -0
- data/lib/facebooker/rails/routing.rb +49 -0
- data/lib/facebooker/rails/test_helpers.rb +88 -0
- data/lib/facebooker/rails/utilities.rb +22 -0
- data/lib/facebooker/server_cache.rb +24 -0
- data/lib/facebooker/service.rb +31 -0
- data/lib/facebooker/session.rb +564 -0
- data/lib/facebooker/version.rb +9 -0
- data/lib/facebooker.rb +143 -0
- data/lib/net/http_multipart_post.rb +123 -0
- data/lib/tasks/facebooker.rake +18 -0
- data/lib/tasks/tunnel.rake +46 -0
- data/rails/init.rb +1 -0
- data/setup.rb +1585 -0
- data/templates/layout.erb +24 -0
- data/test/adapters_test.rb +98 -0
- data/test/batch_request_test.rb +82 -0
- data/test/event_test.rb +15 -0
- data/test/facebook_admin_test.rb +75 -0
- data/test/facebook_cache_test.rb +43 -0
- data/test/facebook_data_test.rb +84 -0
- data/test/facebooker_test.rb +855 -0
- data/test/fixtures/multipart_post_body_with_only_parameters.txt +33 -0
- data/test/fixtures/multipart_post_body_with_single_file.txt +38 -0
- data/test/fixtures/multipart_post_body_with_single_file_that_has_nil_key.txt +38 -0
- data/test/http_multipart_post_test.rb +54 -0
- data/test/logging_test.rb +43 -0
- data/test/model_test.rb +91 -0
- data/test/publisher_test.rb +436 -0
- data/test/rails_integration_test.rb +1126 -0
- data/test/session_test.rb +587 -0
- data/test/test_helper.rb +60 -0
- data/test/user_test.rb +229 -0
- metadata +181 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<fb:fbml>
|
|
2
|
+
<style>
|
|
3
|
+
body { background-color: #fff; color: #333; }
|
|
4
|
+
|
|
5
|
+
body, p, ol, ul, td {
|
|
6
|
+
font-family: verdana, arial, helvetica, sans-serif;
|
|
7
|
+
font-size: 13px;
|
|
8
|
+
line-height: 18px;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
pre {
|
|
12
|
+
background-color: #eee;
|
|
13
|
+
padding: 10px;
|
|
14
|
+
font-size: 11px;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
a { color: #000; }
|
|
18
|
+
a:visited { color: #666; }
|
|
19
|
+
a:hover { color: #fff; background-color:#000; }
|
|
20
|
+
</style>
|
|
21
|
+
|
|
22
|
+
<%= @contents %>
|
|
23
|
+
|
|
24
|
+
</fb:fbml>
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
|
2
|
+
require 'facebooker'
|
|
3
|
+
class SessionTest < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
ENV['FACEBOOK_API_KEY'] = '1234567'
|
|
8
|
+
ENV['FACEBOOK_SECRET_KEY'] = '7654321'
|
|
9
|
+
Facebooker.current_adapter = nil
|
|
10
|
+
@bebo_api_key = "bebo_api_key"; @bebo_secret_key = "bebo_secret_key"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def teardown
|
|
14
|
+
flexmock_close
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_load_default_adapter
|
|
18
|
+
session = Facebooker::CanvasSession.create(ENV['FACEBOOK_API_KEY'], ENV['FACEBOOK_SECRET_KEY'])
|
|
19
|
+
assert_equal(ENV['FACEBOOK_API_KEY'], Facebooker::Session.api_key)
|
|
20
|
+
assert( Facebooker::FacebookAdapter === Facebooker.current_adapter)
|
|
21
|
+
|
|
22
|
+
ENV['FACEBOOK_API_KEY'] = nil
|
|
23
|
+
ENV['FACEBOOK_SECRET_KEY'] = nil
|
|
24
|
+
Facebooker.current_adapter = nil
|
|
25
|
+
Facebooker::AdapterBase.stubs(:facebooker_config).returns({"api_key" => "facebook_key", "secret_key" => "facebook_secret" })
|
|
26
|
+
assert( Facebooker::FacebookAdapter === Facebooker.current_adapter)
|
|
27
|
+
assert_equal("facebook_key", Facebooker::Session.api_key)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def test_load_bebo_adapter
|
|
31
|
+
|
|
32
|
+
load_bebo_adapter
|
|
33
|
+
assert_equal(@bebo_api_key, Facebooker::Session.api_key)
|
|
34
|
+
assert_equal(@bebo_secret_key, Facebooker::Session.secret_key)
|
|
35
|
+
assert(Facebooker::BeboAdapter === Facebooker.current_adapter, " Bebo adapter not loaded correctly.")
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def load_bebo_adapter
|
|
39
|
+
@bebo_api_key = "bebo_api_key"; @bebo_secret_key = "bebo_secret_key"
|
|
40
|
+
|
|
41
|
+
Facebooker::AdapterBase.stubs(:facebooker_config).returns({"bebo_api_key" => @bebo_api_key, "bebo_adapter" => "BeboAdapter", "bebo_secret_key" => @bebo_secret_key, "foo" => "bar"})
|
|
42
|
+
Facebooker.load_adapter(:config_key_base => "bebo")
|
|
43
|
+
@session = Facebooker::CanvasSession.create(@bebo_api_key, @bebo_secret_key)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_adapter_details
|
|
47
|
+
test_load_default_adapter
|
|
48
|
+
|
|
49
|
+
assert_equal("apps.facebook.com", Facebooker.canvas_server_base)
|
|
50
|
+
assert_equal("api.facebook.com", Facebooker.api_server_base)
|
|
51
|
+
assert_equal("www.facebook.com", Facebooker.www_server_base_url)
|
|
52
|
+
assert_equal("http://api.facebook.com", Facebooker.api_server_base_url)
|
|
53
|
+
assert(Facebooker.is_for?(:facebook))
|
|
54
|
+
load_bebo_adapter
|
|
55
|
+
|
|
56
|
+
assert_equal("apps.bebo.com", Facebooker.canvas_server_base)
|
|
57
|
+
assert_equal("apps.bebo.com", Facebooker.api_server_base)
|
|
58
|
+
assert_equal("www.bebo.com", Facebooker.www_server_base_url)
|
|
59
|
+
assert_equal("http://apps.bebo.com", Facebooker.api_server_base_url)
|
|
60
|
+
assert_equal("http://www.bebo.com/SignIn.jsp?ApiKey=bebo_api_key&v=1.0&canvas=true", @session.login_url)
|
|
61
|
+
assert_equal("http://www.bebo.com/c/apps/add?ApiKey=bebo_api_key&v=1.0", @session.install_url)
|
|
62
|
+
assert(Facebooker.is_for?(:bebo))
|
|
63
|
+
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def test_adapter_failures
|
|
67
|
+
Facebooker::AdapterBase.stubs(:facebooker_config).returns({})
|
|
68
|
+
|
|
69
|
+
assert_raises(Facebooker::AdapterBase::UnableToLoadAdapter){
|
|
70
|
+
Facebooker.load_adapter(:config_key_base => "bebo")
|
|
71
|
+
}
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def test_bebo_specific_issues
|
|
75
|
+
load_bebo_adapter
|
|
76
|
+
|
|
77
|
+
# @session.send(:service).stubs(:post).returns([{:name => "foo"}])
|
|
78
|
+
Net::HTTP.stubs(:post_form).returns("<profile_setFBML_response></profile_setFBML_response>")
|
|
79
|
+
user = Facebooker::User.new(:uid => "123456")
|
|
80
|
+
user.session = @session
|
|
81
|
+
user.set_profile_fbml("foo","bar","foo")
|
|
82
|
+
assert(true)
|
|
83
|
+
Net::HTTP.stubs(:post_form).returns("<users_getInfo_response> <user><uid>123456</uid><name>foo</name></user></users_getInfo_response>")
|
|
84
|
+
user.populate(:name)
|
|
85
|
+
assert(true)
|
|
86
|
+
assert_equal("foo", user.name)
|
|
87
|
+
action = Facebooker::Feed::TemplatizedAction.new()
|
|
88
|
+
action.title_template = "foo"
|
|
89
|
+
Net::HTTP.stubs(:post_form).returns("<feed_publishTemplatizedAction_response>1</feed_publishTemplatizedAction_response>")
|
|
90
|
+
user.publish_templatized_action(action)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def test_bebo_process_data
|
|
94
|
+
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
end
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
|
2
|
+
class BatchRequestTest < Test::Unit::TestCase
|
|
3
|
+
|
|
4
|
+
def setup
|
|
5
|
+
@proc_called=false
|
|
6
|
+
@batch_request=Facebooker::BatchRequest.new({:params=>true},nil)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def test_can_set_result
|
|
10
|
+
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def test_can_set_result_with_proc_and_have_proc_called
|
|
14
|
+
p=Proc.new {@proc_called=true}
|
|
15
|
+
|
|
16
|
+
@batch_request=Facebooker::BatchRequest.new({:params=>true},p)
|
|
17
|
+
@batch_request.result="Mike"
|
|
18
|
+
assert @proc_called
|
|
19
|
+
end
|
|
20
|
+
def test_can_set_result_with_proc_and_use_proc_result
|
|
21
|
+
p=Proc.new {@proc_called=true}
|
|
22
|
+
|
|
23
|
+
@batch_request=Facebooker::BatchRequest.new({:params=>true},p)
|
|
24
|
+
@batch_request.result="Mike"
|
|
25
|
+
assert @batch_request
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_proxies_methods
|
|
29
|
+
@batch_request.result="Mike"
|
|
30
|
+
assert @batch_request == "Mike"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_threequal_works
|
|
34
|
+
@batch_request.result="Mike"
|
|
35
|
+
assert @batch_request === String
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_can_set_exception_and_check_it
|
|
39
|
+
@batch_request.exception_raised=ArgumentError.new
|
|
40
|
+
assert_raises(ArgumentError) {
|
|
41
|
+
@batch_request.exception_raised?
|
|
42
|
+
}
|
|
43
|
+
end
|
|
44
|
+
def test_can_set_exception_and_have_it_raised_on_access
|
|
45
|
+
@batch_request.exception_raised=ArgumentError.new
|
|
46
|
+
assert_raises(ArgumentError) {
|
|
47
|
+
@batch_request == true
|
|
48
|
+
}
|
|
49
|
+
end
|
|
50
|
+
def test_exception_raised_false_when_no_exception
|
|
51
|
+
@batch_request.result="Mike"
|
|
52
|
+
assert ! @batch_request.exception_raised?
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# def test_case_works
|
|
56
|
+
# @batch_request.result="Mike"
|
|
57
|
+
# case @batch_request
|
|
58
|
+
# when String
|
|
59
|
+
# else
|
|
60
|
+
# fail("case failed")
|
|
61
|
+
# end
|
|
62
|
+
#
|
|
63
|
+
# end
|
|
64
|
+
|
|
65
|
+
def test_calling_method_without_result_raises_exception
|
|
66
|
+
assert_raises(Facebooker::BatchRequest::UnexecutedRequest) {
|
|
67
|
+
@batch_request.to_s
|
|
68
|
+
}
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def test_respond_to
|
|
72
|
+
@batch_request.result=[]
|
|
73
|
+
assert @batch_request.respond_to?(:empty?)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def test_calling_method_after_exception_re_raises_exception
|
|
77
|
+
@batch_request.result="String"
|
|
78
|
+
assert_raises(NoMethodError) {
|
|
79
|
+
@batch_request.fake
|
|
80
|
+
}
|
|
81
|
+
end
|
|
82
|
+
end
|
data/test/event_test.rb
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
|
2
|
+
|
|
3
|
+
class EventTest< Test::Unit::TestCase
|
|
4
|
+
def test_attendance_will_query_for_event_when_asked_for_full_event_object
|
|
5
|
+
session = flexmock("a session object")
|
|
6
|
+
eid = 123
|
|
7
|
+
attendance = Facebooker::Event::Attendance.new
|
|
8
|
+
attendance.eid = eid
|
|
9
|
+
attendance.session = session
|
|
10
|
+
event = Facebooker::Event.new
|
|
11
|
+
event.eid = eid
|
|
12
|
+
session.should_receive(:post).once.with('facebook.events.get', :eids => [eid]).and_return([{:eid => eid}])
|
|
13
|
+
assert_equal(123, attendance.event.eid)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
|
2
|
+
|
|
3
|
+
class FacebookAdminTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@session = Facebooker::Session.create('apikey', 'secretkey')
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def test_can_ask_facebook_to_set_app_properties
|
|
9
|
+
expect_http_posts_with_responses(example_set_properties_xml)
|
|
10
|
+
properties = { :application_name => "Video Jukebox", :dev_mode => 0 }
|
|
11
|
+
assert(@session.admin.set_app_properties(properties))
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_set_app_properties_json_conversion
|
|
15
|
+
properties = { :application_name => "Video Jukebox", :dev_mode => 0 }
|
|
16
|
+
flexmock(@session).should_receive(:post).with('facebook.admin.setAppProperties', :properties => properties.to_json).and_return('1').once
|
|
17
|
+
assert(@session.admin.set_app_properties(properties))
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_can_ask_facebook_to_get_app_properties
|
|
21
|
+
expect_http_posts_with_responses(example_get_properties_xml)
|
|
22
|
+
properties = [ :application_name, :dev_mode ]
|
|
23
|
+
assert(@session.admin.get_app_properties(properties))
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_can_get_properties
|
|
27
|
+
mock_http = establish_session
|
|
28
|
+
mock_http.should_receive(:post_form).and_return(example_get_properties_xml).once.ordered(:posts)
|
|
29
|
+
p = @session.admin.get_app_properties(:application_name, :dev_mode, :canvas_name)
|
|
30
|
+
assert_equal 'Video Jukebox', p.application_name
|
|
31
|
+
assert_equal 0, p.dev_mode
|
|
32
|
+
assert_equal 'my_canvas', p.canvas_name
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def test_can_get_allocation
|
|
36
|
+
mock_http = establish_session
|
|
37
|
+
mock_http.should_receive(:post_form).and_return(example_get_allocation_xml).once.ordered(:posts)
|
|
38
|
+
alloc = @session.admin.get_allocation(:notifications_per_day)
|
|
39
|
+
assert_equal 40, alloc
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
private
|
|
43
|
+
def example_set_properties_xml
|
|
44
|
+
<<-XML
|
|
45
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
46
|
+
<admin_setAppProperties_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
47
|
+
xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">1</admin_setAppProperties_response>
|
|
48
|
+
XML
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def example_get_properties_xml
|
|
52
|
+
<<-XML
|
|
53
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
54
|
+
<admin_getAppProperties_response
|
|
55
|
+
xmlns="http://api.facebook.com/1.0/"
|
|
56
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
57
|
+
xsi:schemaLocation="http://api.facebook.com/1.0/http://api.facebook.com/1.0/facebook.xsd">
|
|
58
|
+
{"application_name":"Video Jukebox","callback_url":"http:\/\/67.207.144.245\/","dev_mode":0,"canvas_name":"my_canvas"}
|
|
59
|
+
</admin_getAppProperties_response>
|
|
60
|
+
XML
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def example_get_allocation_xml
|
|
64
|
+
<<-XML
|
|
65
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
66
|
+
<admin_getAllocation_response
|
|
67
|
+
xmlns="http://api.facebook.com/1.0/"
|
|
68
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
69
|
+
xsi:schemaLocation="http://api.facebook.com/1.0/http://api.facebook.com/1.0/facebook.xsd">
|
|
70
|
+
40
|
|
71
|
+
</admin_getAllocation_response>
|
|
72
|
+
XML
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
|
2
|
+
|
|
3
|
+
class FacebookCacheTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@session = Facebooker::Session.create('apikey', 'secretkey')
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def test_can_ask_facebook_to_store_fbml_in_a_named_reference
|
|
9
|
+
expect_http_posts_with_responses(example_set_ref_handle_xml)
|
|
10
|
+
assert(@session.server_cache.set_ref_handle('a_handle_name', '<h2>Some FBML</h2>'))
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def test_can_ask_facebook_to_recache_content_stored_from_a_given_url
|
|
14
|
+
expect_http_posts_with_responses(example_refresh_ref_url_xml)
|
|
15
|
+
assert(@session.server_cache.refresh_ref_url('http://localhost/roflmao'))
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_can_ask_facebook_to_recache_an_img
|
|
19
|
+
expect_http_posts_with_responses(example_refresh_img_xml)
|
|
20
|
+
assert(@session.server_cache.refresh_img_src('http://localhost/roflmao.jpg'))
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
def example_set_ref_handle_xml
|
|
25
|
+
<<-XML
|
|
26
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
27
|
+
<fbml_setRefHandle_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">1</fbml_setRefHandle_response>
|
|
28
|
+
XML
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def example_refresh_ref_url_xml
|
|
32
|
+
<<-XML
|
|
33
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
34
|
+
<fbml_refreshRefUrl_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">1</fbml_refreshRefUrl_response>
|
|
35
|
+
XML
|
|
36
|
+
end
|
|
37
|
+
def example_refresh_img_xml
|
|
38
|
+
<<-XML
|
|
39
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
40
|
+
<fbml_refreshImgSrc_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">1</fbml_refreshImgSrc_response>
|
|
41
|
+
XML
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
|
2
|
+
|
|
3
|
+
class FacebookDataTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@session = Facebooker::Session.create('apikey', 'secretkey')
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def test_can_ask_facebook_to_set_a_cookies
|
|
9
|
+
expect_http_posts_with_responses(example_set_cookie_xml)
|
|
10
|
+
assert(@session.data.set_cookie(12345, 'name', 'value'))
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def test_can_ask_facebook_to_get_cookies
|
|
14
|
+
expect_http_posts_with_responses(example_get_cookies_xml)
|
|
15
|
+
assert(@session.data.get_cookies(12345))
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_can_get_cookies_for_user
|
|
19
|
+
mock_http = establish_session
|
|
20
|
+
mock_http.should_receive(:post_form).and_return(example_get_cookies_xml).once.ordered(:posts)
|
|
21
|
+
cookies = @session.data.get_cookies(508508326)
|
|
22
|
+
assert_equal 'Foo', cookies.first.name
|
|
23
|
+
assert_equal 'Bar', cookies.first.value
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_can_ask_facebook_to_set_a_preference
|
|
27
|
+
expect_http_posts_with_responses(example_set_preference_xml)
|
|
28
|
+
assert(@session.data.set_preference(0, 'hello'))
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def test_can_ask_facebook_to_get_preference
|
|
32
|
+
expect_http_posts_with_responses(example_get_preference_xml)
|
|
33
|
+
assert(@session.data.get_preference(0))
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def test_can_get_preference
|
|
37
|
+
mock_http = establish_session
|
|
38
|
+
mock_http.should_receive(:post_form).and_return(example_get_preference_xml).once.ordered(:posts)
|
|
39
|
+
assert_equal 'hello', @session.data.get_preference(0)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
private
|
|
43
|
+
def example_set_cookie_xml
|
|
44
|
+
<<-XML
|
|
45
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
46
|
+
<data_setCookie_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
47
|
+
xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">1</data_setCookie_response>
|
|
48
|
+
XML
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def example_get_cookies_xml
|
|
52
|
+
<<-XML
|
|
53
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
54
|
+
<data_getCookie_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
55
|
+
xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">
|
|
56
|
+
<cookies>
|
|
57
|
+
<uid>508508326</uid>
|
|
58
|
+
<name>Foo</name>
|
|
59
|
+
<value>Bar</value>
|
|
60
|
+
<expires>0</expires>
|
|
61
|
+
<path>/tmp/</path>
|
|
62
|
+
</cookies>
|
|
63
|
+
</data_getCookie_response>
|
|
64
|
+
XML
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def example_set_preference_xml
|
|
68
|
+
<<-XML
|
|
69
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
70
|
+
<data_setUserPreference_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
71
|
+
xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd"/>
|
|
72
|
+
XML
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def example_get_preference_xml
|
|
76
|
+
<<-XML
|
|
77
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
78
|
+
<data_getUserPreference_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
79
|
+
xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">
|
|
80
|
+
hello
|
|
81
|
+
</data_getUserPreference_response>
|
|
82
|
+
XML
|
|
83
|
+
end
|
|
84
|
+
end
|