koala 0.10.0 → 1.0.0.beta
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +23 -7
- data/Manifest +4 -0
- data/Rakefile +4 -4
- data/koala.gemspec +9 -7
- data/lib/koala.rb +88 -72
- data/lib/koala/graph_api.rb +16 -3
- data/lib/koala/http_services.rb +100 -16
- data/lib/koala/rest_api.rb +73 -6
- data/readme.md +11 -11
- data/spec/facebook_data.yml +9 -3
- data/spec/koala/assets/beach.jpg +0 -0
- data/spec/koala/graph_and_rest_api/graph_and_rest_api_no_token_tests.rb +5 -1
- data/spec/koala/graph_and_rest_api/graph_and_rest_api_with_token_tests.rb +8 -3
- data/spec/koala/graph_api/graph_api_no_access_token_tests.rb +10 -61
- data/spec/koala/graph_api/graph_api_tests.rb +86 -0
- data/spec/koala/graph_api/graph_api_with_access_token_tests.rb +129 -125
- data/spec/koala/live_testing_data_helper.rb +1 -1
- data/spec/koala/net_http_service_tests.rb +259 -15
- data/spec/koala/oauth/oauth_tests.rb +35 -64
- data/spec/koala/rest_api/rest_api_no_access_token_tests.rb +5 -74
- data/spec/koala/rest_api/rest_api_tests.rb +118 -0
- data/spec/koala/rest_api/rest_api_with_access_token_tests.rb +5 -3
- data/spec/koala/test_users/test_users_tests.rb +38 -45
- data/spec/koala/typhoeus_service_tests.rb +156 -0
- data/spec/koala_spec_helper.rb +26 -4
- data/spec/koala_spec_without_mocks.rb +3 -3
- data/spec/mock_facebook_responses.yml +22 -4
- data/spec/mock_http_service.rb +15 -1
- metadata +32 -7
@@ -16,6 +16,10 @@ class FacebookOAuthTests < Test::Unit::TestCase
|
|
16
16
|
@request_secret = @oauth_data["request_secret"] || @secret
|
17
17
|
@signed_request = @oauth_data["signed_request"]
|
18
18
|
@signed_request_result = @oauth_data["signed_request_result"]
|
19
|
+
# for signed requests (http://developers.facebook.com/docs/authentication/canvas/encryption_proposal)
|
20
|
+
@signed_params_secret = @oauth_data["signed_params_secret"] || @secret
|
21
|
+
@signed_params = @oauth_data["signed_params"]
|
22
|
+
@signed_params_result = @oauth_data["signed_params_result"]
|
19
23
|
|
20
24
|
# this should expanded to cover all variables
|
21
25
|
raise Exception, "Must supply app data to run FacebookOAuthTests!" unless @app_id && @secret && @callback_url &&
|
@@ -24,9 +28,9 @@ class FacebookOAuthTests < Test::Unit::TestCase
|
|
24
28
|
|
25
29
|
@oauth = Koala::Facebook::OAuth.new(@app_id, @secret, @callback_url)
|
26
30
|
|
27
|
-
time = Time.now
|
28
|
-
Time.stub!(:now).and_return(time)
|
29
|
-
time.stub!(:to_i).and_return(1273363199)
|
31
|
+
@time = Time.now
|
32
|
+
Time.stub!(:now).and_return(@time)
|
33
|
+
@time.stub!(:to_i).and_return(1273363199)
|
30
34
|
end
|
31
35
|
|
32
36
|
# initialization
|
@@ -356,81 +360,48 @@ class FacebookOAuthTests < Test::Unit::TestCase
|
|
356
360
|
@oauth = Koala::Facebook::OAuth.new(@app_id, @request_secret || @app_secret)
|
357
361
|
end
|
358
362
|
|
359
|
-
|
360
|
-
|
361
|
-
|
363
|
+
# the signed request code comes directly from Facebook
|
364
|
+
# so we only need to test at a high level that it works
|
365
|
+
# signed params refers to http://developers.facebook.com/docs/authentication/canvas
|
366
|
+
# signed request refers to http://developers.facebook.com/docs/authentication/canvas/encryption_proposal
|
367
|
+
it "should throw an error if the algorithm is unsupported" do
|
368
|
+
JSON.stub!(:parse).and_return("algorithm" => "my fun algorithm")
|
369
|
+
lambda { @oauth.parse_signed_request(@signed_request) }.should raise_error
|
362
370
|
end
|
363
371
|
|
364
|
-
it "should
|
365
|
-
|
366
|
-
@
|
367
|
-
@oauth.should_receive(:base64_url_decode).with(sig).and_return("4")
|
368
|
-
@oauth.parse_signed_request(@signed_request)
|
372
|
+
it "should throw an error if the signature is invalid" do
|
373
|
+
OpenSSL::HMAC.stub!(:hexdigest).and_return("i'm an invalid signature")
|
374
|
+
lambda { @oauth.parse_signed_request(@signed_request) }.should raise_error
|
369
375
|
end
|
370
376
|
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
end
|
376
|
-
|
377
|
-
it "should get the sha64 encoded payload using proper arguments from OpenSSL::HMAC" do
|
378
|
-
payload = ""
|
379
|
-
@signed_request.should_receive(:split).with(".").and_return(["1", payload])
|
380
|
-
OpenSSL::HMAC.should_receive(:digest).with("sha256", @request_secret, payload)
|
381
|
-
@oauth.parse_signed_request(@signed_request)
|
377
|
+
describe "for signed params" do
|
378
|
+
it "should work" do
|
379
|
+
@oauth.parse_signed_request(@signed_request).should == @signed_request_result
|
380
|
+
end
|
382
381
|
end
|
383
382
|
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
OpenSSL::HMAC.should_receive(:digest).with(anything, anything, anything).and_return(encoded_payload)
|
389
|
-
encoded_payload.should_receive(:==).with(sig)
|
390
|
-
@oauth.parse_signed_request(@signed_request)
|
391
|
-
end
|
392
|
-
|
393
|
-
describe "if the encoded payload matches the signature" do
|
394
|
-
before :each do
|
395
|
-
# set it up so the sig will match the encoded payload
|
396
|
-
raw_sig = ""
|
397
|
-
@sig = "2"
|
398
|
-
@payload = "1"
|
399
|
-
@signed_request.should_receive(:split).and_return([raw_sig, @payload])
|
400
|
-
@oauth.should_receive(:base64_url_decode).with(raw_sig).and_return(@sig)
|
401
|
-
OpenSSL::HMAC.should_receive(:digest).with(anything, anything, anything).and_return(@sig.dup)
|
383
|
+
describe "for signed requests" do
|
384
|
+
it "should work" do
|
385
|
+
@oauth = Koala::Facebook::OAuth.new(@app_id, @signed_params_secret || @app_secret)
|
386
|
+
@oauth.parse_signed_request(@signed_params).should == @signed_params_result
|
402
387
|
end
|
403
388
|
|
404
|
-
it "should
|
405
|
-
@
|
406
|
-
@oauth.
|
389
|
+
it "should throw an error if the params are too old" do
|
390
|
+
@time.stub!(:to_i).and_return(1287601988 + 4000)
|
391
|
+
@oauth = Koala::Facebook::OAuth.new(@app_id, @signed_params_secret || @app_secret)
|
392
|
+
|
393
|
+
lambda { @oauth.parse_signed_request(@signed_params) }.should raise_error
|
407
394
|
end
|
408
395
|
|
409
|
-
it "should
|
410
|
-
|
411
|
-
@oauth.
|
412
|
-
|
413
|
-
@oauth.parse_signed_request(@
|
414
|
-
end
|
415
|
-
end
|
416
|
-
|
417
|
-
describe "if the encoded payload does not match the signature" do
|
418
|
-
before :each do
|
419
|
-
sig = ""
|
420
|
-
@signed_request.should_receive(:split).and_return([sig, ""])
|
421
|
-
OpenSSL::HMAC.should_receive(:digest).with(anything, anything, anything).and_return("hi")
|
396
|
+
it "should let you specify the max age for a request" do
|
397
|
+
@time.stub!(:to_i).and_return(1287601988 + 4000)
|
398
|
+
@oauth = Koala::Facebook::OAuth.new(@app_id, @signed_params_secret || @app_secret)
|
399
|
+
|
400
|
+
lambda { @oauth.parse_signed_request(@signed_params, 4001) }.should_not raise_error
|
422
401
|
end
|
423
402
|
|
424
|
-
it "should return nil" do
|
425
|
-
@oauth.parse_signed_request(@signed_request).should be_nil
|
426
|
-
end
|
427
403
|
end
|
428
404
|
|
429
|
-
describe "run against data" do
|
430
|
-
it "should work" do
|
431
|
-
@oauth.parse_signed_request(@signed_request).should == @signed_request_result
|
432
|
-
end
|
433
|
-
end
|
434
405
|
end
|
435
406
|
|
436
407
|
end # describe
|
@@ -1,94 +1,25 @@
|
|
1
1
|
shared_examples_for "Koala RestAPI without an access token" do
|
2
|
-
# REST_CALL
|
3
|
-
describe "when making a rest request" do
|
4
|
-
it "should use the proper path" do
|
5
|
-
method = stub('methodName')
|
6
|
-
@api.should_receive(:api).with(
|
7
|
-
"method/#{method}",
|
8
|
-
anything,
|
9
|
-
anything,
|
10
|
-
anything
|
11
|
-
)
|
12
|
-
|
13
|
-
@api.rest_call(method)
|
14
|
-
end
|
15
|
-
|
16
|
-
it "should always use the rest api" do
|
17
|
-
@api.should_receive(:api).with(
|
18
|
-
anything,
|
19
|
-
anything,
|
20
|
-
anything,
|
21
|
-
:rest_api => true
|
22
|
-
)
|
23
|
-
|
24
|
-
@api.rest_call('anything')
|
25
|
-
end
|
26
|
-
|
27
|
-
it "should take an optional hash of arguments" do
|
28
|
-
args = {:arg1 => 'arg1'}
|
29
|
-
|
30
|
-
@api.should_receive(:api).with(
|
31
|
-
anything,
|
32
|
-
hash_including(args),
|
33
|
-
anything,
|
34
|
-
anything
|
35
|
-
)
|
36
|
-
|
37
|
-
@api.rest_call('anything', args)
|
38
|
-
end
|
39
|
-
|
40
|
-
it "should always ask for JSON" do
|
41
|
-
@api.should_receive(:api).with(
|
42
|
-
anything,
|
43
|
-
hash_including('format' => 'json'),
|
44
|
-
anything,
|
45
|
-
anything
|
46
|
-
)
|
47
|
-
|
48
|
-
@api.rest_call('anything')
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
2
|
# FQL_QUERY
|
53
3
|
describe "when making a FQL request" do
|
54
|
-
it "should call fql.query method" do
|
55
|
-
@api.should_receive(:rest_call).with(
|
56
|
-
"fql.query",
|
57
|
-
anything
|
58
|
-
).and_return(Koala::Response.new(200, "2", {}))
|
59
|
-
|
60
|
-
@api.fql_query stub('query string')
|
61
|
-
end
|
62
|
-
|
63
|
-
it "should pass a query argument" do
|
64
|
-
query = stub('query string')
|
65
|
-
|
66
|
-
@api.should_receive(:rest_call).with(
|
67
|
-
anything,
|
68
|
-
hash_including("query" => query)
|
69
|
-
)
|
70
|
-
|
71
|
-
@api.fql_query(query)
|
72
|
-
end
|
73
|
-
|
74
4
|
it "should be able to access public information via FQL" do
|
75
5
|
@result = @api.fql_query("select first_name from user where uid = 216743")
|
76
6
|
@result.size.should == 1
|
77
7
|
@result.first["first_name"].should == "Chris"
|
78
8
|
end
|
79
|
-
|
9
|
+
|
80
10
|
it "should not be able to access protected information via FQL" do
|
81
11
|
lambda { @api.fql_query("select read_stream from permissions where uid = 216743") }.should raise_error(Koala::Facebook::APIError)
|
82
12
|
end
|
83
13
|
end
|
84
14
|
end
|
85
15
|
|
86
|
-
class FacebookRestAPINoAccessTokenTest < Test::Unit::TestCase
|
16
|
+
class FacebookRestAPINoAccessTokenTest < Test::Unit::TestCase
|
87
17
|
describe "Koala RestAPI without an access token" do
|
88
18
|
before :each do
|
89
19
|
@api = Koala::Facebook::RestAPI.new
|
90
20
|
end
|
91
|
-
|
92
|
-
it_should_behave_like "Koala RestAPI
|
21
|
+
|
22
|
+
it_should_behave_like "Koala RestAPI"
|
23
|
+
it_should_behave_like "Koala RestAPI without an access token"
|
93
24
|
end
|
94
25
|
end
|
@@ -0,0 +1,118 @@
|
|
1
|
+
shared_examples_for "Koala RestAPI" do
|
2
|
+
# REST_CALL
|
3
|
+
describe "when making a rest request" do
|
4
|
+
it "should use the proper path" do
|
5
|
+
method = stub('methodName')
|
6
|
+
@api.should_receive(:api).with(
|
7
|
+
"method/#{method}",
|
8
|
+
anything,
|
9
|
+
anything,
|
10
|
+
anything
|
11
|
+
)
|
12
|
+
|
13
|
+
@api.rest_call(method)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should always use the rest api" do
|
17
|
+
@api.should_receive(:api).with(
|
18
|
+
anything,
|
19
|
+
anything,
|
20
|
+
anything,
|
21
|
+
hash_including(:rest_api => true)
|
22
|
+
)
|
23
|
+
|
24
|
+
@api.rest_call('anything')
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should set the read_only option to true if the method is listed in the read-only list" do
|
28
|
+
method = Koala::Facebook::RestAPI::READ_ONLY_METHODS.first
|
29
|
+
|
30
|
+
@api.should_receive(:api).with(
|
31
|
+
anything,
|
32
|
+
anything,
|
33
|
+
anything,
|
34
|
+
hash_including(:read_only => true)
|
35
|
+
)
|
36
|
+
|
37
|
+
@api.rest_call(method)
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should set the read_only option to false if the method is not inthe read-only list" do
|
41
|
+
method = "I'm not a read-only method"
|
42
|
+
|
43
|
+
@api.should_receive(:api).with(
|
44
|
+
anything,
|
45
|
+
anything,
|
46
|
+
anything,
|
47
|
+
hash_including(:read_only => false)
|
48
|
+
)
|
49
|
+
|
50
|
+
@api.rest_call(method)
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
it "should take an optional hash of arguments" do
|
55
|
+
args = {:arg1 => 'arg1'}
|
56
|
+
|
57
|
+
@api.should_receive(:api).with(
|
58
|
+
anything,
|
59
|
+
hash_including(args),
|
60
|
+
anything,
|
61
|
+
anything
|
62
|
+
)
|
63
|
+
|
64
|
+
@api.rest_call('anything', args)
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should always ask for JSON" do
|
68
|
+
@api.should_receive(:api).with(
|
69
|
+
anything,
|
70
|
+
hash_including('format' => 'json'),
|
71
|
+
anything,
|
72
|
+
anything
|
73
|
+
)
|
74
|
+
|
75
|
+
@api.rest_call('anything')
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should pass any options provided to the API" do
|
79
|
+
options = {:a => 2}
|
80
|
+
|
81
|
+
@api.should_receive(:api).with(
|
82
|
+
anything,
|
83
|
+
hash_including('format' => 'json'),
|
84
|
+
anything,
|
85
|
+
hash_including(options)
|
86
|
+
)
|
87
|
+
|
88
|
+
@api.rest_call('anything', {}, options)
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should throw an APIError if the result hash has an error key" do
|
92
|
+
Koala.stub(:make_request).and_return(Koala::Response.new(500, {"error_code" => "An error occurred!"}, {}))
|
93
|
+
lambda { @api.rest_call("koppel", {}) }.should raise_exception(Koala::Facebook::APIError)
|
94
|
+
end
|
95
|
+
|
96
|
+
describe "when making a FQL request" do
|
97
|
+
it "should call fql.query method" do
|
98
|
+
@api.should_receive(:rest_call).with(
|
99
|
+
"fql.query",
|
100
|
+
anything
|
101
|
+
).and_return(Koala::Response.new(200, "2", {}))
|
102
|
+
|
103
|
+
@api.fql_query stub('query string')
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should pass a query argument" do
|
107
|
+
query = stub('query string')
|
108
|
+
|
109
|
+
@api.should_receive(:rest_call).with(
|
110
|
+
anything,
|
111
|
+
hash_including("query" => query)
|
112
|
+
)
|
113
|
+
|
114
|
+
@api.fql_query(query)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
@@ -8,7 +8,7 @@ shared_examples_for "Koala RestAPI with an access token" do
|
|
8
8
|
|
9
9
|
it "should be able to access protected information via FQL" do
|
10
10
|
# Tests agains the permissions fql table
|
11
|
-
|
11
|
+
|
12
12
|
# get the current user's ID
|
13
13
|
# we're sneakily using the Graph API, which should be okay since it has its own tests
|
14
14
|
g = Koala::Facebook::GraphAPI.new(@token)
|
@@ -27,10 +27,12 @@ end
|
|
27
27
|
class FacebookRestAPIWithAccessTokenTests < Test::Unit::TestCase
|
28
28
|
describe "Koala RestAPI with an access token" do
|
29
29
|
include LiveTestingDataHelper
|
30
|
-
|
31
|
-
|
30
|
+
|
32
31
|
before :each do
|
33
32
|
@api = Koala::Facebook::RestAPI.new(@token)
|
34
33
|
end
|
34
|
+
|
35
|
+
it_should_behave_like "Koala RestAPI"
|
36
|
+
it_should_behave_like "Koala RestAPI with an access token"
|
35
37
|
end
|
36
38
|
end
|
@@ -10,37 +10,37 @@ class TestUsersTests < Test::Unit::TestCase
|
|
10
10
|
@app_id = @oauth_data["app_id"]
|
11
11
|
@secret = @oauth_data["secret"]
|
12
12
|
@app_access_token = @oauth_data["app_access_token"]
|
13
|
-
|
13
|
+
|
14
14
|
# check OAuth data
|
15
15
|
unless @app_id && @secret && @app_access_token
|
16
|
-
raise Exception, "Must supply OAuth app id, secret, app_access_token, and callback to run live subscription tests!"
|
16
|
+
raise Exception, "Must supply OAuth app id, secret, app_access_token, and callback to run live subscription tests!"
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
@is_mock = defined?(Koala::IS_MOCK) && Koala::IS_MOCK
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
describe "when initializing" do
|
23
23
|
# basic initialization
|
24
24
|
it "should initialize properly with an app_id and an app_access_token" do
|
25
25
|
test_users = Facebook::TestUsers.new(:app_id => @app_id, :app_access_token => @app_access_token)
|
26
26
|
test_users.should be_a(Facebook::TestUsers)
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
# init with secret / fetching the token
|
30
|
-
it "should initialize properly with an app_id and a secret" do
|
30
|
+
it "should initialize properly with an app_id and a secret" do
|
31
31
|
test_users = Facebook::TestUsers.new(:app_id => @app_id, :secret => @secret)
|
32
|
-
test_users.should be_a(Facebook::TestUsers)
|
32
|
+
test_users.should be_a(Facebook::TestUsers)
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
it "should use the OAuth class to fetch a token when provided an app_id and a secret" do
|
36
36
|
oauth = Facebook::OAuth.new(@app_id, @secret)
|
37
37
|
token = oauth.get_app_access_token
|
38
38
|
oauth.should_receive(:get_app_access_token).and_return(token)
|
39
|
-
Facebook::OAuth.should_receive(:new).with(@app_id, @secret).and_return(oauth)
|
39
|
+
Facebook::OAuth.should_receive(:new).with(@app_id, @secret).and_return(oauth)
|
40
40
|
test_users = Facebook::TestUsers.new(:app_id => @app_id, :secret => @secret)
|
41
41
|
end
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
describe "when used without network" do
|
45
45
|
before :each do
|
46
46
|
@test_users = Facebook::TestUsers.new({:app_access_token => @app_access_token, :app_id => @app_id})
|
@@ -53,31 +53,31 @@ class TestUsersTests < Test::Unit::TestCase
|
|
53
53
|
result.should be_a(Hash)
|
54
54
|
(result["id"] && result["access_token"] && result["login_url"]).should
|
55
55
|
end
|
56
|
-
|
56
|
+
|
57
57
|
it "should create a test user when not given installed, ignoring permissions" do
|
58
58
|
result = @test_users.create(false, "read_stream")
|
59
59
|
@temporary_object_id = result["id"]
|
60
60
|
result.should be_a(Hash)
|
61
61
|
(result["id"] && result["access_token"] && result["login_url"]).should
|
62
62
|
end
|
63
|
-
|
63
|
+
|
64
64
|
it "should accept permissions as a string" do
|
65
65
|
@test_users.graph_api.should_receive(:graph_call).with(anything, hash_including("permissions" => "read_stream,publish_stream"), anything)
|
66
66
|
result = @test_users.create(true, "read_stream,publish_stream")
|
67
67
|
end
|
68
|
-
|
68
|
+
|
69
69
|
it "should accept permissions as an array" do
|
70
70
|
@test_users.graph_api.should_receive(:graph_call).with(anything, hash_including("permissions" => "read_stream,publish_stream"), anything)
|
71
71
|
result = @test_users.create(true, ["read_stream", "publish_stream"])
|
72
72
|
end
|
73
|
-
|
73
|
+
|
74
74
|
it "should create a test user when given installed and a permission" do
|
75
75
|
result = @test_users.create(true, "read_stream")
|
76
76
|
@temporary_object_id = result["id"]
|
77
77
|
result.should be_a(Hash)
|
78
78
|
(result["id"] && result["access_token"] && result["login_url"]).should
|
79
79
|
end
|
80
|
-
|
80
|
+
|
81
81
|
describe "with a user to delete" do
|
82
82
|
before :each do
|
83
83
|
@user1 = @test_users.create(true, "read_stream")
|
@@ -87,25 +87,25 @@ class TestUsersTests < Test::Unit::TestCase
|
|
87
87
|
after :each do
|
88
88
|
print "\nCleaning up test users..."
|
89
89
|
@test_users.delete(@user1) if @user1
|
90
|
-
@test_users.delete(@user2) if @user2
|
90
|
+
@test_users.delete(@user2) if @user2
|
91
91
|
puts "done."
|
92
92
|
end
|
93
|
-
|
93
|
+
|
94
94
|
it "should delete a user by id" do
|
95
95
|
@test_users.delete(@user1['id']).should be_true
|
96
96
|
@user1 = nil
|
97
97
|
end
|
98
|
-
|
98
|
+
|
99
99
|
it "should delete a user by hash" do
|
100
100
|
@test_users.delete(@user2).should be_true
|
101
101
|
@user2 = nil
|
102
102
|
end
|
103
|
-
|
103
|
+
|
104
104
|
it "should not delete users when provided a false ID" do
|
105
105
|
lambda { @test_users.delete("#{@user1['id']}1") }.should raise_exception(Koala::Facebook::APIError)
|
106
106
|
end
|
107
107
|
end
|
108
|
-
|
108
|
+
|
109
109
|
describe "with delete_all" do
|
110
110
|
it "should delete all users found by the list commnand" do
|
111
111
|
array = [1, 2, 3]
|
@@ -114,18 +114,18 @@ class TestUsersTests < Test::Unit::TestCase
|
|
114
114
|
@test_users.delete_all
|
115
115
|
end
|
116
116
|
end
|
117
|
-
|
117
|
+
|
118
118
|
describe "with existing users" do
|
119
119
|
before :each do
|
120
120
|
@user1 = @test_users.create(true, "read_stream")
|
121
121
|
@user2 = @test_users.create(true, "read_stream,user_interests")
|
122
122
|
end
|
123
|
-
|
123
|
+
|
124
124
|
after :each do
|
125
125
|
@test_users.delete(@user1)
|
126
126
|
@test_users.delete(@user2)
|
127
127
|
end
|
128
|
-
|
128
|
+
|
129
129
|
it "should list test users" do
|
130
130
|
result = @test_users.list
|
131
131
|
result.should be_an(Array)
|
@@ -133,26 +133,26 @@ class TestUsersTests < Test::Unit::TestCase
|
|
133
133
|
(first_user["id"] && first_user["access_token"] && first_user["login_url"]).should
|
134
134
|
(second_user["id"] && second_user["access_token"] && second_user["login_url"]).should
|
135
135
|
end
|
136
|
-
|
136
|
+
|
137
137
|
it "should make two users into friends by id" do
|
138
138
|
result = @test_users.befriend(@user1['id'], @user2['id'])
|
139
139
|
result.should be_true
|
140
140
|
end
|
141
|
-
|
141
|
+
|
142
142
|
it "should make two users into friends by hash" do
|
143
143
|
result = @test_users.befriend(@user1, @user2)
|
144
144
|
result.should be_true
|
145
145
|
end
|
146
|
-
|
146
|
+
|
147
147
|
end # with existing users
|
148
|
-
|
148
|
+
|
149
149
|
end # when used without network
|
150
|
-
|
151
|
-
describe "when creating a network of friends" do
|
150
|
+
|
151
|
+
describe "when creating a network of friends" do
|
152
152
|
before :each do
|
153
153
|
@test_users = Facebook::TestUsers.new({:app_access_token => @app_access_token, :app_id => @app_id})
|
154
154
|
@network = []
|
155
|
-
|
155
|
+
|
156
156
|
if @is_mock
|
157
157
|
id_counter = 999999900
|
158
158
|
@test_users.stub!(:create).and_return do
|
@@ -163,7 +163,7 @@ class TestUsersTests < Test::Unit::TestCase
|
|
163
163
|
@test_users.stub!(:delete).and_return(true)
|
164
164
|
end
|
165
165
|
end
|
166
|
-
|
166
|
+
|
167
167
|
describe "tests that create users" do
|
168
168
|
before :each do
|
169
169
|
print "\nCleaning up test user network..."
|
@@ -178,22 +178,15 @@ class TestUsersTests < Test::Unit::TestCase
|
|
178
178
|
test_users.delete_all
|
179
179
|
puts "done!"
|
180
180
|
end
|
181
|
-
|
182
|
-
it "should create a
|
183
|
-
|
184
|
-
@network.
|
185
|
-
@network.size.should == 2
|
186
|
-
end
|
187
|
-
|
188
|
-
it "should create a 50 person network" do
|
189
|
-
puts "\nStarting 50-person network test (this may take several minutes)..."
|
190
|
-
@network = @test_users.create_network(50)
|
181
|
+
|
182
|
+
it "should create a 5 person network" do
|
183
|
+
size = 5
|
184
|
+
@network = @test_users.create_network(size)
|
191
185
|
@network.should be_a(Array)
|
192
|
-
@network.size.should ==
|
193
|
-
puts "done!"
|
186
|
+
@network.size.should == size
|
194
187
|
end
|
195
188
|
end
|
196
|
-
|
189
|
+
|
197
190
|
it "should limit to a 50 person network" do
|
198
191
|
@test_users.should_receive(:create).exactly(50).times
|
199
192
|
@test_users.stub!(:befriend)
|
@@ -208,7 +201,7 @@ class TestUsersTests < Test::Unit::TestCase
|
|
208
201
|
@test_users.stub!(:befriend)
|
209
202
|
@network = @test_users.create_network(count, installed, perms)
|
210
203
|
end
|
211
|
-
|
204
|
+
|
212
205
|
end # when creating network
|
213
206
|
|
214
207
|
end # describe Koala TestUsers
|