taweili-facebooker 1.0.37
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/.autotest +15 -0
- data/CHANGELOG.rdoc +24 -0
- data/COPYING.rdoc +19 -0
- data/Manifest.txt +133 -0
- data/README.rdoc +104 -0
- data/Rakefile +85 -0
- data/TODO.rdoc +4 -0
- data/examples/desktop_login.rb +14 -0
- data/facebooker.gemspec +38 -0
- data/generators/facebook/facebook_generator.rb +14 -0
- data/generators/facebook/templates/config/facebooker.yml +49 -0
- data/generators/facebook/templates/public/javascripts/facebooker.js +83 -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/generators/xd_receiver/templates/xd_receiver.html +10 -0
- data/generators/xd_receiver/xd_receiver_generator.rb +10 -0
- data/init.rb +25 -0
- data/install.rb +12 -0
- data/lib/facebooker/adapters/adapter_base.rb +91 -0
- data/lib/facebooker/adapters/bebo_adapter.rb +77 -0
- data/lib/facebooker/adapters/facebook_adapter.rb +52 -0
- data/lib/facebooker/admin.rb +42 -0
- data/lib/facebooker/batch_request.rb +45 -0
- data/lib/facebooker/data.rb +57 -0
- data/lib/facebooker/feed.rb +78 -0
- data/lib/facebooker/logging.rb +44 -0
- data/lib/facebooker/mobile.rb +20 -0
- data/lib/facebooker/mock/service.rb +50 -0
- data/lib/facebooker/mock/session.rb +18 -0
- data/lib/facebooker/model.rb +139 -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/applicationrestrictions.rb +10 -0
- data/lib/facebooker/models/cookie.rb +10 -0
- data/lib/facebooker/models/education_info.rb +11 -0
- data/lib/facebooker/models/event.rb +28 -0
- data/lib/facebooker/models/friend_list.rb +16 -0
- data/lib/facebooker/models/group.rb +36 -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 +28 -0
- data/lib/facebooker/models/photo.rb +19 -0
- data/lib/facebooker/models/tag.rb +12 -0
- data/lib/facebooker/models/user.rb +497 -0
- data/lib/facebooker/models/video.rb +9 -0
- data/lib/facebooker/models/work_info.rb +10 -0
- data/lib/facebooker/parser.rb +650 -0
- data/lib/facebooker/rails/backwards_compatible_param_checks.rb +31 -0
- data/lib/facebooker/rails/controller.rb +337 -0
- data/lib/facebooker/rails/cucumber/world.rb +46 -0
- data/lib/facebooker/rails/cucumber.rb +28 -0
- data/lib/facebooker/rails/extensions/action_controller.rb +48 -0
- data/lib/facebooker/rails/extensions/rack_setup.rb +6 -0
- data/lib/facebooker/rails/extensions/routing.rb +15 -0
- data/lib/facebooker/rails/facebook_form_builder.rb +112 -0
- data/lib/facebooker/rails/facebook_pretty_errors.rb +22 -0
- data/lib/facebooker/rails/facebook_request_fix.rb +30 -0
- data/lib/facebooker/rails/facebook_request_fix_2-3.rb +31 -0
- data/lib/facebooker/rails/facebook_session_handling.rb +68 -0
- data/lib/facebooker/rails/facebook_url_helper.rb +192 -0
- data/lib/facebooker/rails/facebook_url_rewriting.rb +60 -0
- data/lib/facebooker/rails/helpers/fb_connect.rb +118 -0
- data/lib/facebooker/rails/helpers.rb +780 -0
- data/lib/facebooker/rails/integration_session.rb +38 -0
- data/lib/facebooker/rails/profile_publisher_extensions.rb +42 -0
- data/lib/facebooker/rails/publisher.rb +554 -0
- data/lib/facebooker/rails/routing.rb +49 -0
- data/lib/facebooker/rails/test_helpers.rb +68 -0
- data/lib/facebooker/rails/utilities.rb +22 -0
- data/lib/facebooker/server_cache.rb +24 -0
- data/lib/facebooker/service.rb +102 -0
- data/lib/facebooker/session.rb +606 -0
- data/lib/facebooker/version.rb +9 -0
- data/lib/facebooker.rb +180 -0
- data/lib/net/http_multipart_post.rb +123 -0
- data/lib/rack/facebook.rb +77 -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/facebooker/adapters_test.rb +96 -0
- data/test/facebooker/admin_test.rb +102 -0
- data/test/facebooker/batch_request_test.rb +83 -0
- data/test/facebooker/data_test.rb +86 -0
- data/test/facebooker/logging_test.rb +43 -0
- data/test/facebooker/mobile_test.rb +45 -0
- data/test/facebooker/model_test.rb +133 -0
- data/test/facebooker/models/event_test.rb +15 -0
- data/test/facebooker/models/photo_test.rb +16 -0
- data/test/facebooker/models/user_test.rb +343 -0
- data/test/facebooker/rails/facebook_request_fix_2-3_test.rb +24 -0
- data/test/facebooker/rails/facebook_url_rewriting_test.rb +39 -0
- data/test/facebooker/rails/publisher_test.rb +481 -0
- data/test/facebooker/rails_integration_test.rb +1398 -0
- data/test/facebooker/server_cache_test.rb +44 -0
- data/test/facebooker/session_test.rb +614 -0
- data/test/facebooker_test.rb +951 -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/net/http_multipart_post_test.rb +52 -0
- data/test/rack/facebook_test.rb +61 -0
- data/test/rails_test_helper.rb +27 -0
- data/test/test_helper.rb +74 -0
- metadata +232 -0
@@ -0,0 +1,343 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
|
2
|
+
require 'active_support'
|
3
|
+
|
4
|
+
class Facebooker::UserTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@session = Facebooker::Session.create('apikey', 'secretkey')
|
8
|
+
@user = Facebooker::User.new(1234, @session)
|
9
|
+
@other_user = Facebooker::User.new(4321, @session)
|
10
|
+
ENV['FACEBOOK_CANVAS_PATH'] ='facebook_app_name'
|
11
|
+
ENV['FACEBOOK_API_KEY'] = '1234567'
|
12
|
+
ENV['FACEBOOK_SECRET_KEY'] = '7654321'
|
13
|
+
|
14
|
+
@user.friends = [@other_user]
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_has_permission
|
18
|
+
expect_http_posts_with_responses(has_app_permission_response_xml)
|
19
|
+
assert @user.has_permission?("status_update")
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_can_ask_user_if_he_or_she_is_friends_with_another_user
|
23
|
+
assert(@user.friends_with?(@other_user))
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_can_ask_user_if_he_or_she_is_friends_with_another_user_by_user_id
|
27
|
+
assert(@user.friends_with?(@other_user.id))
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_does_not_query_facebook_for_uid
|
31
|
+
@session.expects(:post).never
|
32
|
+
assert_equal 1234, Facebooker::User.new(1234, @session).uid
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_uid_is_always_an_integer
|
36
|
+
assert_equal 1234, Facebooker::User.new(:uid => "1234").uid
|
37
|
+
assert_equal 1234, Facebooker::User.new(:id => "1234").uid
|
38
|
+
|
39
|
+
assert_equal 1234, Facebooker::User.new(:uid => "1234").id
|
40
|
+
assert_equal 1234, Facebooker::User.new(:id => "1234").id
|
41
|
+
|
42
|
+
assert_equal 1234, Facebooker::User.new(:uid => "1234").facebook_id
|
43
|
+
assert_equal 1234, Facebooker::User.new(:id => "1234").facebook_id
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_cast_to_friend_list_id_with_nil
|
47
|
+
assert_nil @user.cast_to_friend_list_id(nil)
|
48
|
+
end
|
49
|
+
def test_cast_to_friend_list_id_with_integer
|
50
|
+
assert_equal 14,@user.cast_to_friend_list_id(14)
|
51
|
+
end
|
52
|
+
def test_cast_to_friend_list_id_with_string
|
53
|
+
@user.expects(:friend_lists).returns([Facebooker::FriendList.new(:flid=>199,:name=>"Work")])
|
54
|
+
assert_equal 199,@user.cast_to_friend_list_id("Work")
|
55
|
+
end
|
56
|
+
def test_cast_to_friend_list_id_with_friend_list
|
57
|
+
assert_equal 199,@user.cast_to_friend_list_id(Facebooker::FriendList.new(:flid=>199,:name=>"Work"))
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_cast_to_friend_list_id_with_invalid_string_raises
|
61
|
+
@user.expects(:friend_lists).returns([Facebooker::FriendList.new(:flid=>1,:name=>"Not Picked")])
|
62
|
+
assert_nil @user.cast_to_friend_list_id("Something")
|
63
|
+
fail("No exception raised, Expected Facebooker::Session::InvalidFriendList")
|
64
|
+
rescue Facebooker::Session::InvalidFriendList
|
65
|
+
nil
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_can_create_from_current_session
|
69
|
+
Facebooker::Session.expects(:current).returns("current")
|
70
|
+
user=Facebooker::User.new(1)
|
71
|
+
assert_equal("current",user.session)
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_raises_when_no_session_bound
|
75
|
+
assert_raises(Facebooker::Model::UnboundSessionException) { Facebooker::User.new(1, nil).populate }
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_can_set_mobile_fbml
|
79
|
+
@user.expects(:set_profile_fbml).with(nil,"test",nil,nil)
|
80
|
+
@user.mobile_fbml="test"
|
81
|
+
end
|
82
|
+
def test_can_set_profile_action
|
83
|
+
@user.expects(:set_profile_fbml).with(nil,nil,"test",nil)
|
84
|
+
@user.profile_action="test"
|
85
|
+
end
|
86
|
+
def test_can_set_profile_fbml
|
87
|
+
@user.expects(:set_profile_fbml).with("test",nil,nil,nil)
|
88
|
+
@user.profile_fbml="test"
|
89
|
+
end
|
90
|
+
|
91
|
+
def test_can_set_profile_main
|
92
|
+
@user.expects(:set_profile_fbml).with(nil,nil,nil,"test")
|
93
|
+
@user.profile_main="test"
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_can_call_set_profile_fbml
|
97
|
+
@session.expects(:post).with('facebook.profile.setFBML', {:uid=>1234,:profile=>"profile",:profile_action=>"action",:mobile_profile=>"mobile"},false)
|
98
|
+
@user.set_profile_fbml("profile","mobile","action")
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_can_call_set_profile_fbml_with_profile_main
|
102
|
+
@session.expects(:post).with('facebook.profile.setFBML', {:uid=>1234,:profile=>"profile",:profile_action=>"action",:mobile_profile=>"mobile", :profile_main => 'profile_main'},false)
|
103
|
+
@user.set_profile_fbml("profile","mobile","action",'profile_main')
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_can_get_profile_photos
|
107
|
+
@user.expects(:profile_photos)
|
108
|
+
@user.profile_photos
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_can_set_cookie
|
112
|
+
@user.expects(:set_cookie).with('name', 'value')
|
113
|
+
@user.set_cookie('name', 'value')
|
114
|
+
end
|
115
|
+
|
116
|
+
def test_can_get_cookies
|
117
|
+
@user.expects(:get_cookies).with('name')
|
118
|
+
@user.get_cookies('name')
|
119
|
+
end
|
120
|
+
|
121
|
+
def test_get_profile_photos
|
122
|
+
@user = Facebooker::User.new(548871286, @session)
|
123
|
+
expect_http_posts_with_responses(example_profile_photos_get_xml)
|
124
|
+
photos = @user.profile_photos
|
125
|
+
assert_equal "2357384227378429949", photos.first.aid
|
126
|
+
end
|
127
|
+
|
128
|
+
def test_publish_to
|
129
|
+
@user = Facebooker::User.new(548871286, @session)
|
130
|
+
expect_http_posts_with_responses(example_profile_publish_to_get_xml)
|
131
|
+
@user.publish_to(@other_user, :message => 'i love you man')
|
132
|
+
end
|
133
|
+
|
134
|
+
def test_can_send_email
|
135
|
+
@user.expects(:send_email).with("subject", "body text")
|
136
|
+
@user.send_email("subject", "body text")
|
137
|
+
|
138
|
+
@user.expects(:send_email).with("subject", nil, "body fbml")
|
139
|
+
@user.send_email("subject", nil, "body fbml")
|
140
|
+
end
|
141
|
+
|
142
|
+
def test_doesnt_post_to_facebook_when_assigning_status
|
143
|
+
@session.expects(:post).never
|
144
|
+
@user.status="my status"
|
145
|
+
end
|
146
|
+
def test_can_set_status_with_string
|
147
|
+
@session.expects(:post).with('facebook.users.setStatus', {:status=>"my status",:status_includes_verb=>1, :uid => @user.uid}, false)
|
148
|
+
@user.set_status("my status")
|
149
|
+
end
|
150
|
+
|
151
|
+
def test_get_events
|
152
|
+
@user = Facebooker::User.new(9507801, @session)
|
153
|
+
expect_http_posts_with_responses(example_events_get_xml)
|
154
|
+
events = @user.events
|
155
|
+
assert_equal 29511517904, events.first.eid
|
156
|
+
end
|
157
|
+
|
158
|
+
def test_events_caching_honors_params
|
159
|
+
@user = Facebooker::User.new(9507801, @session)
|
160
|
+
@session.expects(:post).returns([{:eid=>1}])
|
161
|
+
assert_equal 1,@user.events.first.eid
|
162
|
+
@session.expects(:post).returns([{:eid=>2}])
|
163
|
+
assert_equal 2,@user.events(:start_time=>1.day.ago).first.eid
|
164
|
+
@session.expects(:post).never
|
165
|
+
assert_equal 1,@user.events.first.eid
|
166
|
+
end
|
167
|
+
|
168
|
+
|
169
|
+
def test_to_s
|
170
|
+
assert_equal("1234",@user.to_s)
|
171
|
+
end
|
172
|
+
|
173
|
+
def test_equality_with_same_id
|
174
|
+
assert_equal @user, @user.dup
|
175
|
+
assert_equal @user, Facebooker::User.new(:id => @user.id)
|
176
|
+
end
|
177
|
+
|
178
|
+
def test_not_equal_to_differnt_class
|
179
|
+
assert_not_equal @user, flexmock(:id => @user.id)
|
180
|
+
end
|
181
|
+
|
182
|
+
def test_hash_email
|
183
|
+
assert_equal "4228600737_c96da02bba97aedfd26136e980ae3761", Facebooker::User.hash_email("mary@example.com")
|
184
|
+
end
|
185
|
+
def test_hash_email_not_normalized
|
186
|
+
assert_equal "4228600737_c96da02bba97aedfd26136e980ae3761", Facebooker::User.hash_email(" MaRy@example.com ")
|
187
|
+
end
|
188
|
+
|
189
|
+
def test_register_with_array
|
190
|
+
expect_http_posts_with_responses(register_response_xml)
|
191
|
+
assert_equal ["4228600737_c96da02bba97aedfd26136e980ae3761"],Facebooker::User.register([{:email=>"mary@example.com",:account_id=>1}])
|
192
|
+
end
|
193
|
+
|
194
|
+
def test_unregister_with_array
|
195
|
+
expect_http_posts_with_responses(unregister_response_xml)
|
196
|
+
assert_equal ["4228600737_c96da02bba97aedfd26136e980ae3761"],Facebooker::User.unregister(["4228600737_c96da02bba97aedfd26136e980ae3761"])
|
197
|
+
end
|
198
|
+
|
199
|
+
def test_unregister_emails_with_array
|
200
|
+
expect_http_posts_with_responses(unregister_response_xml)
|
201
|
+
assert_equal ["mary@example.com"],Facebooker::User.unregister_emails(["mary@example.com"])
|
202
|
+
end
|
203
|
+
|
204
|
+
def test_register_with_array_raises_if_not_all_success
|
205
|
+
expect_http_posts_with_responses(register_response_xml)
|
206
|
+
assert_equal ["4228600737_c96da02bba97aedfd26136e980ae3761"],Facebooker::User.register([{:email=>"mary@example.com",:account_id=>1},{:email=>"mike@example.com",:account_id=>2}])
|
207
|
+
fail "Should have raised Facebooker::Session::UserRegistrationFailed"
|
208
|
+
rescue Facebooker::Session::UserRegistrationFailed => e
|
209
|
+
assert_equal({:email=>"mike@example.com",:account_id=>2},e.failed_users.first)
|
210
|
+
end
|
211
|
+
|
212
|
+
def test_unregister_with_array_raises_if_not_all_success
|
213
|
+
expect_http_posts_with_responses(unregister_response_xml)
|
214
|
+
assert_equal ["4228600737_c96da02bba97aedfd26136e980ae3761"],Facebooker::User.unregister(["4228600737_c96da02bba97aedfd26136e980ae3761","3587916587_791214eb452bf4de30e957d65a0234d4"])
|
215
|
+
fail "Should have raised Facebooker::Session::UserUnRegistrationFailed"
|
216
|
+
rescue Facebooker::Session::UserUnRegistrationFailed => e
|
217
|
+
assert_equal("3587916587_791214eb452bf4de30e957d65a0234d4",e.failed_users.first)
|
218
|
+
end
|
219
|
+
|
220
|
+
def test_unregister_emails_with_array_raises_if_not_all_success
|
221
|
+
expect_http_posts_with_responses(unregister_response_xml)
|
222
|
+
assert_equal ["mary@example.com"],Facebooker::User.unregister_emails(["mary@example.com","mike@example.com"])
|
223
|
+
fail "Should have raised Facebooker::Session::UserUnRegistrationFailed"
|
224
|
+
rescue Facebooker::Session::UserUnRegistrationFailed => e
|
225
|
+
assert_equal("mike@example.com",e.failed_users.first)
|
226
|
+
end
|
227
|
+
|
228
|
+
|
229
|
+
def test_get_locale
|
230
|
+
@user = Facebooker::User.new(9507801, @session)
|
231
|
+
expect_http_posts_with_responses(example_users_get_info_xml)
|
232
|
+
assert_equal "en_US", @user.locale
|
233
|
+
end
|
234
|
+
|
235
|
+
def test_get_profile_url
|
236
|
+
@user = Facebooker::User.new(8055, @session)
|
237
|
+
expect_http_posts_with_responses(example_users_get_info_xml)
|
238
|
+
assert_equal "http://www.facebook.com/profile.php?id=8055", @user.profile_url
|
239
|
+
end
|
240
|
+
|
241
|
+
private
|
242
|
+
def example_profile_photos_get_xml
|
243
|
+
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>
|
244
|
+
<photos_get_response xmlns=\"http://api.facebook.com/1.0/\"
|
245
|
+
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
|
246
|
+
xsi:schemaLocation=\"http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd\" list=\"true\">
|
247
|
+
<photo>
|
248
|
+
<pid>34585991612804</pid>
|
249
|
+
<aid>2357384227378429949</aid>
|
250
|
+
<owner>1240077</owner>
|
251
|
+
<src>http://ip002.facebook.com/v11/135/18/8055/s1240077_30043524_2020.jpg</src>
|
252
|
+
<src_big>http://ip002.facebook.com/v11/135/18/8055/n1240077_30043524_2020.jpg</src_big>
|
253
|
+
<src_small>http://ip002.facebook.com/v11/135/18/8055/t1240077_30043524_2020.jpg</src_small>
|
254
|
+
<link>http://www.facebook.com/photo.php?pid=30043524&id=8055</link>
|
255
|
+
<caption>From The Deathmatch (Trailer) (1999)</caption>
|
256
|
+
<created>1132553361</created>
|
257
|
+
</photo>
|
258
|
+
<photo>
|
259
|
+
<pid>34585991612805</pid>
|
260
|
+
<aid>2357384227378429949</aid>
|
261
|
+
<owner>1240077</owner>
|
262
|
+
<src>http://ip002.facebook.com/v11/135/18/8055/s1240077_30043525_2184.jpg</src>
|
263
|
+
<src_big>http://ip002.facebook.com/v11/135/18/8055/n1240077_30043525_2184.jpg</src_big>
|
264
|
+
<src_small>http://ip002.facebook.com/v11/135/18/8055/t1240077_30043525_2184.jpg</src_small>
|
265
|
+
<link>http://www.facebook.com/photo.php?pid=30043525&id=8055</link>
|
266
|
+
<caption>Mexico City, back cover of the CYHS Student Underground 1999.</caption>
|
267
|
+
<created>1132553362</created>
|
268
|
+
</photo>
|
269
|
+
</photos_get_response>"
|
270
|
+
end
|
271
|
+
|
272
|
+
def example_events_get_xml
|
273
|
+
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>
|
274
|
+
<events_get_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\" list=\"true\">
|
275
|
+
<event>
|
276
|
+
<eid>29511517904</eid>
|
277
|
+
<name>PUMA SALE</name>
|
278
|
+
<tagline/>
|
279
|
+
<nid>0</nid>
|
280
|
+
<pic>http://profile.ak.facebook.com/object3/370/66/s29511517904_6952.jpg</pic>
|
281
|
+
<pic_big>http://profile.ak.facebook.com/object3/370/66/n29511517904_6952.jpg</pic_big>
|
282
|
+
<pic_small>http://profile.ak.facebook.com/object3/370/66/t29511517904_6952.jpg</pic_small>
|
283
|
+
<host>PUMA</host>
|
284
|
+
<description>PUMA SALE</description>
|
285
|
+
<event_type>Education</event_type>
|
286
|
+
<event_subtype>Study Group</event_subtype>
|
287
|
+
<start_time>1212166800</start_time>
|
288
|
+
<end_time>1212364800</end_time>
|
289
|
+
<creator>1234261165</creator>
|
290
|
+
<update_time>1209768148</update_time>
|
291
|
+
<location>PUMA LOT</location>
|
292
|
+
<venue>
|
293
|
+
<street>5 LYBERTY WAY</street>
|
294
|
+
<city>Westford</city>
|
295
|
+
<state>Massachusetts</state>
|
296
|
+
<country>United States</country>
|
297
|
+
<latitude>42.5792</latitude>
|
298
|
+
<longitude>-71.4383</longitude>
|
299
|
+
</venue>
|
300
|
+
</event>
|
301
|
+
</events_get_response>"
|
302
|
+
end
|
303
|
+
|
304
|
+
def example_users_get_info_xml
|
305
|
+
<<-XML
|
306
|
+
<?xml version="1.0" encoding="UTF-8"?> <users_getInfo_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" list="true"> <user> <uid>8055</uid> <about_me>This field perpetuates the glorification of the ego. Also, it has a character limit.</about_me> <activities>Here: facebook, etc. There: Glee Club, a capella, teaching.</activities> <affiliations list="true"> <affiliation> <nid>50453093</nid> <name>Facebook Developers</name> <type>work</type> <status/> <year/> </affiliation> </affiliations> <birthday>November 3</birthday> <books>The Brothers K, GEB, Ken Wilber, Zen and the Art, Fitzgerald, The Emporer's New Mind, The Wonderful Story of Henry Sugar</books> <current_location> <city>Palo Alto</city> <state>CA</state> <country>United States</country> <zip>94303</zip> </current_location> <education_history list="true"> <education_info> <name>Harvard</name> <year>2003</year> <concentrations list="true"> <concentration>Applied Mathematics</concentration> <concentration>Computer Science</concentration> </concentrations> </education_info> </education_history> <first_name>Dave</first_name> <hometown_location> <city>York</city> <state>PA</state> <country>United States</country> </hometown_location> <hs_info> <hs1_name>Central York High School</hs1_name> <hs2_name/> <grad_year>1999</grad_year> <hs1_id>21846</hs1_id> <hs2_id>0</hs2_id> </hs_info> <is_app_user>1</is_app_user> <has_added_app>1</has_added_app> <interests>coffee, computers, the funny, architecture, code breaking,snowboarding, philosophy, soccer, talking to strangers</interests> <last_name>Fetterman</last_name> <locale>en_US</locale> <meeting_for list="true"> <seeking>Friendship</seeking> </meeting_for> <meeting_sex list="true"> <sex>female</sex> </meeting_sex> <movies>Tommy Boy, Billy Madison, Fight Club, Dirty Work, Meet the Parents, My Blue Heaven, Office Space </movies> <music>New Found Glory, Daft Punk, Weezer, The Crystal Method, Rage, the KLF, Green Day, Live, Coldplay, Panic at the Disco, Family Force 5</music> <name>Dave Fetterman</name> <notes_count>0</notes_count> <pic>http://photos-055.facebook.com/ip007/profile3/1271/65/s8055_39735.jpg</pic> <pic_big>http://photos-055.facebook.com/ip007/profile3/1271/65/n8055_39735.jpg</pic_big> <pic_small>http://photos-055.facebook.com/ip007/profile3/1271/65/t8055_39735.jpg</pic_small> <pic_square>http://photos-055.facebook.com/ip007/profile3/1271/65/q8055_39735.jpg</pic_square> <political>Moderate</political> <profile_update_time>1170414620</profile_update_time> <profile_url>http://www.facebook.com/profile.php?id=8055</profile_url> <quotes/> <relationship_status>In a Relationship</relationship_status> <religion/> <sex>male</sex> <significant_other_id xsi:nil="true"/> <status> <message>Fast Company, November issue, page 84</message> <time>1193075616</time> </status> <timezone>-8</timezone> <tv>cf. Bob Trahan</tv> <wall_count>121</wall_count> <work_history list="true"> <work_info> <location> <city>Palo Alto</city> <state>CA</state> <country>United States</country> </location> <company_name>Facebook</company_name> <position>Software Engineer</position> <description>Tech Lead, Facebook Platform</description> <start_date>2006-01</start_date> <end_date/> </work_info> </work_history> </user> </users_getInfo_response>
|
307
|
+
XML
|
308
|
+
end
|
309
|
+
|
310
|
+
def register_response_xml
|
311
|
+
<<-XML
|
312
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
313
|
+
<connect_registerUsers_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/facebook.xsd" list="true">
|
314
|
+
<connect_registerUsers_response_elt>4228600737_c96da02bba97aedfd26136e980ae3761</connect_registerUsers_response_elt>
|
315
|
+
</connect_registerUsers_response>
|
316
|
+
XML
|
317
|
+
end
|
318
|
+
|
319
|
+
def unregister_response_xml
|
320
|
+
<<-XML
|
321
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
322
|
+
<connect_unregisterUsers_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/facebook.xsd" list="true">
|
323
|
+
<connect_unregisterUsers_response_elt>4228600737_c96da02bba97aedfd26136e980ae3761</connect_unregisterUsers_response_elt>
|
324
|
+
</connect_unregisterUsers_response>
|
325
|
+
XML
|
326
|
+
end
|
327
|
+
|
328
|
+
def has_app_permission_response_xml
|
329
|
+
<<-XML
|
330
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
331
|
+
<users_hasAppPermission_response xmlns="http://api.facebook.com/1.0/"
|
332
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
333
|
+
xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">1</users_hasAppPermission_response>
|
334
|
+
XML
|
335
|
+
end
|
336
|
+
|
337
|
+
def example_profile_publish_to_get_xml
|
338
|
+
<<-eoxml
|
339
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
340
|
+
<stream_publish_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">703826862_78463536862</stream_publish_response>
|
341
|
+
eoxml
|
342
|
+
end
|
343
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../rails_test_helper')
|
2
|
+
|
3
|
+
class Facebooker::Rails::FacebookRequestFix23Test < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
ENV['FACEBOOK_API_KEY'] = '1234567'
|
7
|
+
ENV['FACEBOOK_SECRET_KEY'] = '7654321'
|
8
|
+
if Rails.version < '2.3'
|
9
|
+
@request = ActionController::TestRequest.new({"fb_sig_is_ajax"=>"1"}, {}, nil)
|
10
|
+
else
|
11
|
+
@request = ActionController::TestRequest.new
|
12
|
+
@request.query_parameters[:fb_sig_is_ajax] = "1"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_xhr_when_is_ajax
|
17
|
+
assert @request.xhr?
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_xml_http_request_when_is_ajax
|
21
|
+
assert @request.xml_http_request?
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../rails_test_helper')
|
2
|
+
|
3
|
+
class Facebooker::Rails::FacebookUrlRewritingTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@request = ActionController::TestRequest.new
|
7
|
+
@params = {}
|
8
|
+
@rewriter = ActionController::UrlRewriter.new(@request, @params)
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_one_or_true_on_string_1
|
12
|
+
assert @rewriter.one_or_true( "1" )
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_one_or_true_on_string_0
|
16
|
+
assert !@rewriter.one_or_true( "0" )
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_one_or_true_on_integer_1
|
20
|
+
assert @rewriter.one_or_true( 1 )
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_one_or_true_on_float_1
|
24
|
+
assert @rewriter.one_or_true( 1.0 )
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_one_or_true_on_true
|
28
|
+
assert @rewriter.one_or_true( true )
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_one_or_true_on_false
|
32
|
+
assert !@rewriter.one_or_true( false )
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_one_or_true_on_nil
|
36
|
+
assert !@rewriter.one_or_true( nil )
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|