facebooker 1.0.44 → 1.0.48
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/Manifest.txt +1 -0
- data/Rakefile +35 -26
- data/facebooker.gemspec +5 -5
- data/generators/xd_receiver/templates/xd_receiver_ssl.html +10 -0
- data/lib/facebooker.rb +30 -10
- data/lib/facebooker/adapters/adapter_base.rb +1 -1
- data/lib/facebooker/adapters/facebook_adapter.rb +4 -0
- data/lib/facebooker/batch_request.rb +1 -1
- data/lib/facebooker/models/page.rb +1 -1
- data/lib/facebooker/models/user.rb +32 -9
- data/lib/facebooker/parser.rb +13 -12
- data/lib/facebooker/rails/backwards_compatible_param_checks.rb +1 -1
- data/lib/facebooker/rails/controller.rb +9 -19
- data/lib/facebooker/rails/helpers.rb +67 -6
- data/lib/facebooker/rails/helpers/fb_connect.rb +5 -3
- data/lib/facebooker/rails/publisher.rb +31 -7
- data/lib/facebooker/service/base_service.rb +2 -1
- data/lib/facebooker/service/curl_service.rb +3 -2
- data/lib/facebooker/session.rb +39 -4
- data/lib/facebooker/version.rb +1 -1
- data/test/facebooker/adapters_test.rb +17 -0
- data/test/facebooker/models/user_test.rb +7 -1
- data/test/facebooker/rails/facebook_url_rewriting_test.rb +39 -2
- data/test/facebooker/rails/integration_session_test.rb +4 -1
- data/test/facebooker/rails/publisher_test.rb +19 -12
- data/test/facebooker/rails_integration_test.rb +101 -50
- data/test/facebooker/session_test.rb +37 -0
- data/test/rack/facebook_test.rb +15 -8
- data/test/rails_test_helper.rb +8 -0
- data/test/test_helper.rb +2 -2
- metadata +11 -3
@@ -22,6 +22,33 @@ class Facebooker::SessionTest < Test::Unit::TestCase
|
|
22
22
|
assert_equal("http://www.facebook.com/install.php?api_key=1234567&v=1.0&next=next_url%3Fa%3D1%26b%3D2", session.install_url(:next => "next_url?a=1&b=2"))
|
23
23
|
end
|
24
24
|
|
25
|
+
def test_permission_url_returns_correct_url_and_parameters
|
26
|
+
fb_url = "http://www.facebook.com/connect/prompt_permissions.php?api_key=#{ENV['FACEBOOK_API_KEY']}&v=1.0&next=next_url&ext_perm=publish_stream,email"
|
27
|
+
url = Facebooker::Session.new(ENV['FACEBOOK_API_KEY'], ENV['FACEBOOK_SECRET_KEY']).permission_url('publish_stream,email', {:next => 'next_url'})
|
28
|
+
assert_equal url, fb_url
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_login_url_skips_all_parameters_when_not_passed_or_false
|
32
|
+
session = Facebooker::Session.new(ENV['FACEBOOK_API_KEY'], ENV['FACEBOOK_SECRET_KEY'])
|
33
|
+
url = session.login_url({:fbconnect => false})
|
34
|
+
expected_url = Facebooker.login_url_base
|
35
|
+
assert_equal url, expected_url
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_login_url_adds_all_parameters_when_passed
|
39
|
+
login_options = {:skipcookie => true,
|
40
|
+
:hide_checkbox => true,
|
41
|
+
:canvas => true,
|
42
|
+
:fbconnect => true,
|
43
|
+
:req_perms => 'publish_stream',
|
44
|
+
:next => 'http://example.com'}
|
45
|
+
|
46
|
+
session = Facebooker::Session.new(ENV['FACEBOOK_API_KEY'], ENV['FACEBOOK_SECRET_KEY'])
|
47
|
+
url = session.login_url(login_options)
|
48
|
+
expected_url = "#{Facebooker.login_url_base}&next=#{CGI.escape(login_options[:next])}&hide_checkbox=true&canvas=true&fbconnect=true&req_perms=publish_stream"
|
49
|
+
assert_equal url, expected_url
|
50
|
+
end
|
51
|
+
|
25
52
|
def test_can_get_api_and_secret_key_from_environment
|
26
53
|
assert_equal('1234567', Facebooker::Session.api_key)
|
27
54
|
assert_equal('7654321', Facebooker::Session.secret_key)
|
@@ -245,6 +272,16 @@ class Facebooker::SessionTest < Test::Unit::TestCase
|
|
245
272
|
@session.register_template_bundle(one_line, short_story, full_story)
|
246
273
|
end
|
247
274
|
|
275
|
+
def test_can_deactivate_template_bundle_by_id
|
276
|
+
@session = Facebooker::Session.create(ENV['FACBEOOK_API_KEY'], ENV['FACEBOOK_SECRET_KEY'])
|
277
|
+
@session.expects(:post).with(
|
278
|
+
'facebook.feed.deactivateTemplateBundleByID',
|
279
|
+
{:template_bundle_id => '999'},
|
280
|
+
false
|
281
|
+
)
|
282
|
+
@session.deactivate_template_bundle_by_id(999)
|
283
|
+
end
|
284
|
+
|
248
285
|
def test_can_publish_user_action
|
249
286
|
expect_http_posts_with_responses(publish_user_action_return_xml)
|
250
287
|
@session = Facebooker::Session.create(ENV['FACEBOOK_API_KEY'], ENV['FACEBOOK_SECRET_KEY'])
|
data/test/rack/facebook_test.rb
CHANGED
@@ -7,11 +7,20 @@ class Rack::FacebookTest < Test::Unit::TestCase
|
|
7
7
|
|
8
8
|
def setup
|
9
9
|
flexmock(Facebooker).should_receive(:secret_key).and_return('secret')
|
10
|
+
flexmock(Facebooker).should_receive(:load_adapter)
|
10
11
|
@app = lambda do |env|
|
11
12
|
@env = env
|
12
13
|
Rack::Response.new().to_a
|
13
14
|
end
|
14
15
|
@facebook = Rack::Facebook.new(@app)
|
16
|
+
@valid_params = {
|
17
|
+
:fb_sig_user => '1',
|
18
|
+
:fb_sig => 'ignored'
|
19
|
+
}
|
20
|
+
@page = Proc.new {|options|
|
21
|
+
options ||= @valid_params
|
22
|
+
app.post "/", :input => params(options)
|
23
|
+
}
|
15
24
|
end
|
16
25
|
|
17
26
|
def params(p)
|
@@ -28,39 +37,37 @@ class Rack::FacebookTest < Test::Unit::TestCase
|
|
28
37
|
end
|
29
38
|
|
30
39
|
def test_converts_request_method
|
31
|
-
response =
|
32
|
-
:input => params(:fb_sig_request_method => 'GET', :fb_sig => '4d2a700e90b0bcbe54b9e627d2cc1417'))
|
40
|
+
response = @page.call(:fb_sig_request_method => 'GET', :fb_sig => '4d2a700e90b0bcbe54b9e627d2cc1417')
|
33
41
|
assert_equal 200, response.status
|
34
42
|
assert_equal 'GET', @env['REQUEST_METHOD']
|
35
43
|
end
|
36
44
|
|
37
45
|
def test_only_sets_request_method_if_provided
|
38
|
-
response =
|
46
|
+
response = @page.call(:fb_sig_user => '1', :fb_sig => '313dd5caed3d0902d83225ff3ae9a950')
|
39
47
|
assert_equal 200, response.status
|
40
48
|
assert_equal 'POST', @env['REQUEST_METHOD']
|
41
49
|
end
|
42
50
|
|
43
51
|
def test_renders_400_with_invalid_signature
|
44
|
-
response =
|
45
|
-
:input => params(:fb_sig => 'wrong', :fb_sig_user => 1))
|
52
|
+
response = @page.call(:fb_sig => 'wrong', :fb_sig_user => 1)
|
46
53
|
assert_equal 400, response.status
|
47
54
|
end
|
48
55
|
|
49
56
|
def test_skips_with_false_condition
|
50
57
|
@facebook = Rack::Facebook.new(@app) { false }
|
51
|
-
response =
|
58
|
+
response = @page.call({})
|
52
59
|
assert_equal 200, response.status
|
53
60
|
end
|
54
61
|
|
55
62
|
def test_skips_with_true_condition_without_fb_sig
|
56
63
|
@facebook = Rack::Facebook.new(@app) { true }
|
57
|
-
response =
|
64
|
+
response = @page.call(:fb_sig_user => 'ignored')
|
58
65
|
assert_equal 200, response.status
|
59
66
|
end
|
60
67
|
|
61
68
|
def test_verifies_with_true_condition_with_fb_sig
|
62
69
|
@facebook = Rack::Facebook.new(@app) { true }
|
63
|
-
response =
|
70
|
+
response = @page.call(:fb_sig => 'wrong', :fb_sig_user => 'ignored')
|
64
71
|
assert_equal 400, response.status
|
65
72
|
end
|
66
73
|
end
|
data/test/rails_test_helper.rb
CHANGED
@@ -15,6 +15,14 @@ require 'facebooker/rails/helpers'
|
|
15
15
|
require 'facebooker/rails/publisher'
|
16
16
|
require 'facebooker/rails/facebook_form_builder'
|
17
17
|
|
18
|
+
if Rails.version >= '2.3'
|
19
|
+
Test::Unit::TestCase.send :include, ActionController::TestCase::Assertions
|
20
|
+
Test::Unit::TestCase.send :include, ActionController::TestProcess
|
21
|
+
Test::Unit::TestCase.send :include, Facebooker::Rails::TestHelpers
|
22
|
+
|
23
|
+
ActionController::Base.session = { :key => "9hfwfl8slgh9", :secret => "db08fcba0378a9e066ce037bec4b72bc" }
|
24
|
+
end
|
25
|
+
|
18
26
|
ActionController::Routing::Routes.draw do |map|
|
19
27
|
map.connect '', :controller=>"facebook",:conditions=>{:canvas=>true}
|
20
28
|
map.connect '', :controller=>"plain_old_rails"
|
data/test/test_helper.rb
CHANGED
@@ -29,9 +29,9 @@ end
|
|
29
29
|
require 'facebooker'
|
30
30
|
require 'facebooker/rails/test_helpers'
|
31
31
|
|
32
|
-
|
33
32
|
class Test::Unit::TestCase
|
34
|
-
|
33
|
+
|
34
|
+
include Facebooker::Rails::TestHelpers unless self.included_modules.include?( Facebooker::Rails::TestHelpers )
|
35
35
|
|
36
36
|
private
|
37
37
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: facebooker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.48
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chad Fowler
|
@@ -9,11 +9,12 @@ authors:
|
|
9
9
|
- Mike Mangino
|
10
10
|
- Shane Vitarana
|
11
11
|
- Corey Innis
|
12
|
+
- Mike Mangino
|
12
13
|
autorequire:
|
13
14
|
bindir: bin
|
14
15
|
cert_chain: []
|
15
16
|
|
16
|
-
date: 2009-
|
17
|
+
date: 2009-08-26 00:00:00 -04:00
|
17
18
|
default_executable:
|
18
19
|
dependencies:
|
19
20
|
- !ruby/object:Gem::Dependency
|
@@ -43,7 +44,13 @@ description: |-
|
|
43
44
|
* No dependencies outside of the Ruby standard library (This is true with Rails 2.1. Previous Rails versions require the JSON gem)
|
44
45
|
* Concrete classes and methods modeling the Facebook data, so it's easy for a Rubyist to understand what's available
|
45
46
|
* Well tested
|
46
|
-
email:
|
47
|
+
email:
|
48
|
+
- chad@chadfowlwer.com
|
49
|
+
- ""
|
50
|
+
- ""
|
51
|
+
- ""
|
52
|
+
- ""
|
53
|
+
- mmangino@elevatedrails.com
|
47
54
|
executables: []
|
48
55
|
|
49
56
|
extensions: []
|
@@ -95,6 +102,7 @@ files:
|
|
95
102
|
- generators/facebook_scaffold/templates/view_show.fbml.erb
|
96
103
|
- generators/facebook_scaffold/templates/view_show.html.erb
|
97
104
|
- generators/publisher/publisher_generator.rb
|
105
|
+
- generators/xd_receiver/templates/xd_receiver_ssl.html
|
98
106
|
- generators/xd_receiver/templates/xd_receiver.html
|
99
107
|
- generators/xd_receiver/xd_receiver_generator.rb
|
100
108
|
- init.rb
|