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.
Files changed (111) hide show
  1. data/CHANGELOG.txt +0 -0
  2. data/COPYING +19 -0
  3. data/History.txt +16 -0
  4. data/Manifest.txt +110 -0
  5. data/README +46 -0
  6. data/README.txt +81 -0
  7. data/Rakefile +76 -0
  8. data/TODO.txt +10 -0
  9. data/generators/facebook/facebook_generator.rb +14 -0
  10. data/generators/facebook/templates/config/facebooker.yml +41 -0
  11. data/generators/facebook/templates/public/javascripts/facebooker.js +106 -0
  12. data/generators/facebook_controller/USAGE +33 -0
  13. data/generators/facebook_controller/facebook_controller_generator.rb +40 -0
  14. data/generators/facebook_controller/templates/controller.rb +7 -0
  15. data/generators/facebook_controller/templates/functional_test.rb +11 -0
  16. data/generators/facebook_controller/templates/helper.rb +2 -0
  17. data/generators/facebook_controller/templates/view.fbml.erb +2 -0
  18. data/generators/facebook_controller/templates/view.html.erb +2 -0
  19. data/generators/facebook_publisher/facebook_publisher_generator.rb +14 -0
  20. data/generators/facebook_publisher/templates/create_facebook_templates.rb +15 -0
  21. data/generators/facebook_publisher/templates/publisher.rb +3 -0
  22. data/generators/facebook_scaffold/USAGE +27 -0
  23. data/generators/facebook_scaffold/facebook_scaffold_generator.rb +118 -0
  24. data/generators/facebook_scaffold/templates/controller.rb +93 -0
  25. data/generators/facebook_scaffold/templates/facebook_style.css +2579 -0
  26. data/generators/facebook_scaffold/templates/functional_test.rb +89 -0
  27. data/generators/facebook_scaffold/templates/helper.rb +2 -0
  28. data/generators/facebook_scaffold/templates/layout.fbml.erb +6 -0
  29. data/generators/facebook_scaffold/templates/layout.html.erb +17 -0
  30. data/generators/facebook_scaffold/templates/style.css +74 -0
  31. data/generators/facebook_scaffold/templates/view_edit.fbml.erb +13 -0
  32. data/generators/facebook_scaffold/templates/view_edit.html.erb +18 -0
  33. data/generators/facebook_scaffold/templates/view_index.fbml.erb +24 -0
  34. data/generators/facebook_scaffold/templates/view_index.html.erb +24 -0
  35. data/generators/facebook_scaffold/templates/view_new.fbml.erb +12 -0
  36. data/generators/facebook_scaffold/templates/view_new.html.erb +17 -0
  37. data/generators/facebook_scaffold/templates/view_show.fbml.erb +10 -0
  38. data/generators/facebook_scaffold/templates/view_show.html.erb +10 -0
  39. data/generators/publisher/publisher_generator.rb +14 -0
  40. data/init.rb +54 -0
  41. data/install.rb +12 -0
  42. data/lib/facebooker/adapters/adapter_base.rb +87 -0
  43. data/lib/facebooker/adapters/bebo_adapter.rb +73 -0
  44. data/lib/facebooker/adapters/facebook_adapter.rb +48 -0
  45. data/lib/facebooker/admin.rb +28 -0
  46. data/lib/facebooker/batch_request.rb +44 -0
  47. data/lib/facebooker/data.rb +57 -0
  48. data/lib/facebooker/feed.rb +78 -0
  49. data/lib/facebooker/logging.rb +51 -0
  50. data/lib/facebooker/model.rb +123 -0
  51. data/lib/facebooker/models/affiliation.rb +10 -0
  52. data/lib/facebooker/models/album.rb +11 -0
  53. data/lib/facebooker/models/applicationproperties.rb +39 -0
  54. data/lib/facebooker/models/cookie.rb +10 -0
  55. data/lib/facebooker/models/education_info.rb +11 -0
  56. data/lib/facebooker/models/event.rb +26 -0
  57. data/lib/facebooker/models/friend_list.rb +14 -0
  58. data/lib/facebooker/models/group.rb +35 -0
  59. data/lib/facebooker/models/info_item.rb +10 -0
  60. data/lib/facebooker/models/info_section.rb +10 -0
  61. data/lib/facebooker/models/location.rb +8 -0
  62. data/lib/facebooker/models/notifications.rb +17 -0
  63. data/lib/facebooker/models/page.rb +27 -0
  64. data/lib/facebooker/models/photo.rb +10 -0
  65. data/lib/facebooker/models/tag.rb +12 -0
  66. data/lib/facebooker/models/user.rb +352 -0
  67. data/lib/facebooker/models/work_info.rb +9 -0
  68. data/lib/facebooker/parser.rb +540 -0
  69. data/lib/facebooker/rails/controller.rb +246 -0
  70. data/lib/facebooker/rails/facebook_asset_path.rb +18 -0
  71. data/lib/facebooker/rails/facebook_form_builder.rb +112 -0
  72. data/lib/facebooker/rails/facebook_pretty_errors.rb +14 -0
  73. data/lib/facebooker/rails/facebook_request_fix.rb +24 -0
  74. data/lib/facebooker/rails/facebook_session_handling.rb +69 -0
  75. data/lib/facebooker/rails/facebook_url_rewriting.rb +39 -0
  76. data/lib/facebooker/rails/helpers.rb +615 -0
  77. data/lib/facebooker/rails/profile_publisher_extensions.rb +42 -0
  78. data/lib/facebooker/rails/publisher.rb +492 -0
  79. data/lib/facebooker/rails/routing.rb +49 -0
  80. data/lib/facebooker/rails/test_helpers.rb +88 -0
  81. data/lib/facebooker/rails/utilities.rb +22 -0
  82. data/lib/facebooker/server_cache.rb +24 -0
  83. data/lib/facebooker/service.rb +31 -0
  84. data/lib/facebooker/session.rb +564 -0
  85. data/lib/facebooker/version.rb +9 -0
  86. data/lib/facebooker.rb +143 -0
  87. data/lib/net/http_multipart_post.rb +123 -0
  88. data/lib/tasks/facebooker.rake +18 -0
  89. data/lib/tasks/tunnel.rake +46 -0
  90. data/rails/init.rb +1 -0
  91. data/setup.rb +1585 -0
  92. data/templates/layout.erb +24 -0
  93. data/test/adapters_test.rb +98 -0
  94. data/test/batch_request_test.rb +82 -0
  95. data/test/event_test.rb +15 -0
  96. data/test/facebook_admin_test.rb +75 -0
  97. data/test/facebook_cache_test.rb +43 -0
  98. data/test/facebook_data_test.rb +84 -0
  99. data/test/facebooker_test.rb +855 -0
  100. data/test/fixtures/multipart_post_body_with_only_parameters.txt +33 -0
  101. data/test/fixtures/multipart_post_body_with_single_file.txt +38 -0
  102. data/test/fixtures/multipart_post_body_with_single_file_that_has_nil_key.txt +38 -0
  103. data/test/http_multipart_post_test.rb +54 -0
  104. data/test/logging_test.rb +43 -0
  105. data/test/model_test.rb +91 -0
  106. data/test/publisher_test.rb +436 -0
  107. data/test/rails_integration_test.rb +1126 -0
  108. data/test/session_test.rb +587 -0
  109. data/test/test_helper.rb +60 -0
  110. data/test/user_test.rb +229 -0
  111. 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
@@ -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
+ {&quot;application_name&quot;:&quot;Video Jukebox&quot;,&quot;callback_url&quot;:&quot;http:\/\/67.207.144.245\/&quot;,&quot;dev_mode&quot;:0,&quot;canvas_name&quot;:&quot;my_canvas&quot;}
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