koala 1.2.0 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +15 -0
- data/koala.gemspec +1 -1
- data/lib/koala/http_service.rb +3 -2
- data/lib/koala/multipart_request.rb +35 -0
- data/lib/koala/oauth.rb +5 -2
- data/lib/koala/rest_api.rb +5 -0
- data/lib/koala/test_users.rb +1 -1
- data/lib/koala/version.rb +1 -1
- data/lib/koala.rb +1 -0
- data/readme.md +22 -5
- data/spec/cases/api_spec.rb +10 -10
- data/spec/cases/http_service_spec.rb +13 -12
- data/spec/cases/multipart_request_spec.rb +66 -0
- data/spec/cases/oauth_spec.rb +105 -67
- data/spec/cases/rest_api_spec.rb +0 -19
- data/spec/cases/test_users_spec.rb +15 -13
- data/spec/fixtures/mock_facebook_responses.yml +13 -0
- data/spec/support/graph_api_shared_examples.rb +82 -56
- data/spec/support/koala_test.rb +17 -15
- data/spec/support/rest_api_shared_examples.rb +69 -25
- metadata +89 -57
@@ -2,7 +2,7 @@ shared_examples_for "Koala GraphAPI" do
|
|
2
2
|
# all Graph API instances should pass these tests, regardless of configuration
|
3
3
|
|
4
4
|
# API
|
5
|
-
it "
|
5
|
+
it "never uses the rest api server" do
|
6
6
|
Koala.should_receive(:make_request).with(
|
7
7
|
anything,
|
8
8
|
anything,
|
@@ -15,13 +15,13 @@ shared_examples_for "Koala GraphAPI" do
|
|
15
15
|
|
16
16
|
# GRAPH CALL
|
17
17
|
describe "graph_call" do
|
18
|
-
it "
|
18
|
+
it "passes all arguments to the api method" do
|
19
19
|
args = [KoalaTest.user1, {}, "get", {:a => :b}]
|
20
20
|
@api.should_receive(:api).with(*args)
|
21
21
|
@api.graph_call(*args)
|
22
22
|
end
|
23
23
|
|
24
|
-
it "
|
24
|
+
it "throws an APIError if the result hash has an error key" do
|
25
25
|
Koala.stub(:make_request).and_return(Koala::Response.new(500, {"error" => "An error occurred!"}, {}))
|
26
26
|
lambda { @api.graph_call(KoalaTest.user1, {}) }.should raise_exception(Koala::Facebook::APIError)
|
27
27
|
end
|
@@ -49,7 +49,7 @@ shared_examples_for "Koala GraphAPI" do
|
|
49
49
|
end
|
50
50
|
|
51
51
|
# SEARCH
|
52
|
-
it "
|
52
|
+
it "can search" do
|
53
53
|
result = @api.search("facebook")
|
54
54
|
result.length.should be_an(Integer)
|
55
55
|
end
|
@@ -58,109 +58,116 @@ shared_examples_for "Koala GraphAPI" do
|
|
58
58
|
# access public info
|
59
59
|
|
60
60
|
# get_object
|
61
|
-
it "
|
61
|
+
it "gets public data about a user" do
|
62
62
|
result = @api.get_object(KoalaTest.user1)
|
63
63
|
# the results should have an ID and a name, among other things
|
64
64
|
(result["id"] && result["name"]).should_not be_nil
|
65
65
|
end
|
66
66
|
|
67
|
-
it "
|
67
|
+
it "gets public data about a Page" do
|
68
68
|
result = @api.get_object(KoalaTest.page)
|
69
69
|
# the results should have an ID and a name, among other things
|
70
70
|
(result["id"] && result["name"]).should
|
71
71
|
end
|
72
72
|
|
73
|
-
it "
|
73
|
+
it "returns [] from get_objects if passed an empty array" do
|
74
74
|
results = @api.get_objects([])
|
75
75
|
results.should == []
|
76
76
|
end
|
77
77
|
|
78
|
-
it "
|
78
|
+
it "gets multiple objects" do
|
79
79
|
results = @api.get_objects([KoalaTest.page, KoalaTest.user1])
|
80
80
|
results.should have(2).items
|
81
81
|
end
|
82
82
|
|
83
|
-
it "
|
83
|
+
it "gets multiple objects if they're a string" do
|
84
84
|
results = @api.get_objects("contextoptional,#{KoalaTest.user1}")
|
85
85
|
results.should have(2).items
|
86
86
|
end
|
87
87
|
|
88
|
-
it "
|
88
|
+
it "can access a user's picture" do
|
89
89
|
@api.get_picture("chris.baclig").should =~ /http[s]*\:\/\//
|
90
90
|
end
|
91
91
|
|
92
|
-
it "
|
92
|
+
it "can access a user's picture, given a picture type" do
|
93
93
|
@api.get_picture(KoalaTest.user2, {:type => 'large'}).should =~ /^http[s]*\:\/\//
|
94
94
|
end
|
95
95
|
|
96
|
-
it "
|
96
|
+
it "can access connections from public Pages" do
|
97
97
|
result = @api.get_connections(KoalaTest.page, "photos")
|
98
98
|
result.should be_a(Array)
|
99
99
|
end
|
100
100
|
|
101
|
-
it "
|
101
|
+
it "can access comments for a URL" do
|
102
102
|
result = @api.get_comments_for_urls(["http://developers.facebook.com/blog/post/472"])
|
103
103
|
(result["http://developers.facebook.com/blog/post/472"]).should
|
104
104
|
end
|
105
105
|
|
106
|
-
it "
|
106
|
+
it "can access comments for 2 URLs" do
|
107
107
|
result = @api.get_comments_for_urls(["http://developers.facebook.com/blog/post/490", "http://developers.facebook.com/blog/post/472"])
|
108
108
|
(result["http://developers.facebook.com/blog/post/490"] && result["http://developers.facebook.com/blog/post/472"]).should
|
109
109
|
end
|
110
110
|
|
111
111
|
# SEARCH
|
112
|
-
it "
|
112
|
+
it "can search" do
|
113
113
|
result = @api.search("facebook")
|
114
114
|
result.length.should be_an(Integer)
|
115
115
|
end
|
116
116
|
|
117
117
|
# PAGING THROUGH COLLECTIONS
|
118
118
|
# see also graph_collection_tests
|
119
|
-
it "
|
119
|
+
it "makes a request for a page when provided a specific set of page params" do
|
120
120
|
query = [1, 2]
|
121
121
|
@api.should_receive(:graph_call).with(*query)
|
122
122
|
@api.get_page(query)
|
123
123
|
end
|
124
|
+
|
125
|
+
# Beta tier
|
126
|
+
it "can use the beta tier" do
|
127
|
+
result = @api.get_object(KoalaTest.user1, {}, :beta => true)
|
128
|
+
# the results should have an ID and a name, among other things
|
129
|
+
(result["id"] && result["name"]).should_not be_nil
|
130
|
+
end
|
124
131
|
end
|
125
132
|
|
126
133
|
|
127
134
|
shared_examples_for "Koala GraphAPI with an access token" do
|
128
|
-
it "
|
135
|
+
it "gets private data about a user" do
|
129
136
|
result = @api.get_object(KoalaTest.user1)
|
130
137
|
# updated_time should be a pretty fixed test case
|
131
138
|
result["updated_time"].should_not be_nil
|
132
139
|
end
|
133
140
|
|
134
|
-
it "
|
141
|
+
it "gets data about 'me'" do
|
135
142
|
result = @api.get_object("me")
|
136
143
|
result["updated_time"].should
|
137
144
|
end
|
138
145
|
|
139
|
-
it "
|
146
|
+
it "gets multiple objects" do
|
140
147
|
result = @api.get_objects([KoalaTest.page, KoalaTest.user1])
|
141
148
|
result.length.should == 2
|
142
149
|
end
|
143
|
-
it "
|
150
|
+
it "can access connections from users" do
|
144
151
|
result = @api.get_connections(KoalaTest.user2, "friends")
|
145
152
|
result.length.should > 0
|
146
153
|
end
|
147
154
|
|
148
155
|
# PUT
|
149
|
-
it "
|
156
|
+
it "can write an object to the graph" do
|
150
157
|
result = @api.put_wall_post("Hello, world, from the test suite!")
|
151
158
|
@temporary_object_id = result["id"]
|
152
159
|
@temporary_object_id.should_not be_nil
|
153
160
|
end
|
154
161
|
|
155
162
|
# DELETE
|
156
|
-
it "
|
163
|
+
it "can delete posts" do
|
157
164
|
result = @api.put_wall_post("Hello, world, from the test suite delete method!")
|
158
165
|
object_id_to_delete = result["id"]
|
159
166
|
delete_result = @api.delete_object(object_id_to_delete)
|
160
167
|
delete_result.should == true
|
161
168
|
end
|
162
169
|
|
163
|
-
it "
|
170
|
+
it "can delete likes" do
|
164
171
|
result = @api.put_wall_post("Hello, world, from the test suite delete method!")
|
165
172
|
@temporary_object_id = result["id"]
|
166
173
|
@api.put_like(@temporary_object_id)
|
@@ -169,7 +176,7 @@ shared_examples_for "Koala GraphAPI with an access token" do
|
|
169
176
|
end
|
170
177
|
|
171
178
|
# additional put tests
|
172
|
-
it "
|
179
|
+
it "can verify messages posted to a wall" do
|
173
180
|
message = "the cats are asleep"
|
174
181
|
put_result = @api.put_wall_post(message)
|
175
182
|
@temporary_object_id = put_result["id"]
|
@@ -179,14 +186,33 @@ shared_examples_for "Koala GraphAPI with an access token" do
|
|
179
186
|
get_result["message"].should == message
|
180
187
|
end
|
181
188
|
|
182
|
-
it "
|
189
|
+
it "can post a message with an attachment to a feed" do
|
183
190
|
result = @api.put_wall_post("Hello, world, from the test suite again!", {:name => "OAuth Playground", :link => "http://oauth.twoalex.com/"})
|
184
191
|
@temporary_object_id = result["id"]
|
185
192
|
@temporary_object_id.should_not be_nil
|
186
193
|
end
|
194
|
+
|
195
|
+
it "can post a message whose attachment has a properties dictionary" do
|
196
|
+
url = KoalaTest.oauth_test_data["callback_url"]
|
197
|
+
options = {
|
198
|
+
"picture" => "#{KoalaTest.oauth_test_data["callback_url"]}/images/logo.png",
|
199
|
+
"name" => "It's a big question",
|
200
|
+
"type" => "link",
|
201
|
+
"link" => KoalaTest.oauth_test_data["callback_url"],
|
202
|
+
"properties" => [
|
203
|
+
{"name" => "Link1'", "text" => "Left", "href" => url},
|
204
|
+
{"name" => "other", "text" => "Straight ahead"}
|
205
|
+
]
|
206
|
+
}
|
207
|
+
|
208
|
+
result = @api.put_wall_post("body", options)
|
209
|
+
@temporary_object_id = result["id"]
|
210
|
+
@temporary_object_id.should_not be_nil
|
211
|
+
end
|
212
|
+
|
187
213
|
|
188
214
|
describe ".put_picture" do
|
189
|
-
it "
|
215
|
+
it "can post photos to the user's wall with an open file object" do
|
190
216
|
content_type = "image/jpg"
|
191
217
|
file = File.open(File.join(File.dirname(__FILE__), "..", "fixtures", "beach.jpg"))
|
192
218
|
|
@@ -195,7 +221,7 @@ shared_examples_for "Koala GraphAPI with an access token" do
|
|
195
221
|
@temporary_object_id.should_not be_nil
|
196
222
|
end
|
197
223
|
|
198
|
-
it "
|
224
|
+
it "can post photos to the user's wall without an open file object" do
|
199
225
|
content_type = "image/jpg",
|
200
226
|
file_path = File.join(File.dirname(__FILE__), "..", "fixtures", "beach.jpg")
|
201
227
|
|
@@ -204,7 +230,7 @@ shared_examples_for "Koala GraphAPI with an access token" do
|
|
204
230
|
@temporary_object_id.should_not be_nil
|
205
231
|
end
|
206
232
|
|
207
|
-
it "
|
233
|
+
it "can verify a photo posted to a user's wall" do
|
208
234
|
content_type = "image/jpg",
|
209
235
|
file_path = File.join(File.dirname(__FILE__), "..", "fixtures", "beach.jpg")
|
210
236
|
|
@@ -224,13 +250,13 @@ shared_examples_for "Koala GraphAPI with an access token" do
|
|
224
250
|
@url = "http://img.slate.com/images/redesign2008/slate_logo.gif"
|
225
251
|
end
|
226
252
|
|
227
|
-
it "
|
253
|
+
it "can post photo to the user's wall using a URL" do
|
228
254
|
result = @api.put_picture(@url)
|
229
255
|
@temporary_object_id = result["id"]
|
230
256
|
@temporary_object_id.should_not be_nil
|
231
257
|
end
|
232
258
|
|
233
|
-
it "
|
259
|
+
it "can post photo to the user's wall using a URL and an additional param" do
|
234
260
|
result = @api.put_picture(@url, :message => "my message")
|
235
261
|
@temporary_object_id = result["id"]
|
236
262
|
@temporary_object_id.should_not be_nil
|
@@ -244,7 +270,7 @@ shared_examples_for "Koala GraphAPI with an access token" do
|
|
244
270
|
@content_type = "video/mpeg4"
|
245
271
|
end
|
246
272
|
|
247
|
-
it "
|
273
|
+
it "sets options[:video] to true" do
|
248
274
|
source = stub("UploadIO")
|
249
275
|
Koala::UploadableIO.stub(:new).and_return(source)
|
250
276
|
source.stub(:requires_base_http_service).and_return(false)
|
@@ -252,7 +278,7 @@ shared_examples_for "Koala GraphAPI with an access token" do
|
|
252
278
|
@api.put_video("foo")
|
253
279
|
end
|
254
280
|
|
255
|
-
it "
|
281
|
+
it "can post videos to the user's wall with an open file object" do
|
256
282
|
file = File.open(@cat_movie)
|
257
283
|
|
258
284
|
result = @api.put_video(file, @content_type)
|
@@ -261,7 +287,7 @@ shared_examples_for "Koala GraphAPI with an access token" do
|
|
261
287
|
end
|
262
288
|
|
263
289
|
|
264
|
-
it "
|
290
|
+
it "can post videos to the user's wall without an open file object" do
|
265
291
|
result = @api.put_video(@cat_movie, @content_type)
|
266
292
|
@temporary_object_id = result["id"]
|
267
293
|
@temporary_object_id.should_not be_nil
|
@@ -272,7 +298,7 @@ shared_examples_for "Koala GraphAPI with an access token" do
|
|
272
298
|
# hence we can't do the same verify test we do for photos
|
273
299
|
end
|
274
300
|
|
275
|
-
it "
|
301
|
+
it "can verify a message with an attachment posted to a feed" do
|
276
302
|
attachment = {"name" => "OAuth Playground", "link" => "http://oauth.twoalex.com/"}
|
277
303
|
result = @api.put_wall_post("Hello, world, from the test suite again!", attachment)
|
278
304
|
@temporary_object_id = result["id"]
|
@@ -283,7 +309,7 @@ shared_examples_for "Koala GraphAPI with an access token" do
|
|
283
309
|
it_matches.should == true
|
284
310
|
end
|
285
311
|
|
286
|
-
it "
|
312
|
+
it "can comment on an object" do
|
287
313
|
result = @api.put_wall_post("Hello, world, from the test suite, testing comments!")
|
288
314
|
@temporary_object_id = result["id"]
|
289
315
|
|
@@ -292,8 +318,8 @@ shared_examples_for "Koala GraphAPI with an access token" do
|
|
292
318
|
comment_result.should_not be_nil
|
293
319
|
end
|
294
320
|
|
295
|
-
it "
|
296
|
-
message_text = "Hello, world, from the test suite, testing comments!"
|
321
|
+
it "can verify a comment posted about an object" do
|
322
|
+
message_text = "Hello, world, from the test suite, testing comments again!"
|
297
323
|
result = @api.put_wall_post(message_text)
|
298
324
|
@temporary_object_id = result["id"]
|
299
325
|
|
@@ -306,8 +332,8 @@ shared_examples_for "Koala GraphAPI with an access token" do
|
|
306
332
|
get_result["message"].should == comment_text
|
307
333
|
end
|
308
334
|
|
309
|
-
it "
|
310
|
-
result = @api.put_wall_post("Hello, world, from the test suite, testing
|
335
|
+
it "can like an object" do
|
336
|
+
result = @api.put_wall_post("Hello, world, from the test suite, testing liking!")
|
311
337
|
@temporary_object_id = result["id"]
|
312
338
|
like_result = @api.put_like(@temporary_object_id)
|
313
339
|
like_result.should be_true
|
@@ -342,7 +368,7 @@ shared_examples_for "Koala GraphAPI with an access token" do
|
|
342
368
|
:put_video => ["x.mp4", "video/mpeg4", {}, "me"],
|
343
369
|
:get_objects => [["x"], {}]
|
344
370
|
}.each_pair do |method_name, params|
|
345
|
-
it "
|
371
|
+
it "passes http options through for #{method_name}" do
|
346
372
|
options = {:a => 2}
|
347
373
|
# graph call should ultimately receive options as the fourth argument
|
348
374
|
@api.should_receive(:graph_call).with(anything, anything, anything, options)
|
@@ -356,7 +382,7 @@ shared_examples_for "Koala GraphAPI with an access token" do
|
|
356
382
|
end
|
357
383
|
|
358
384
|
# also test get_picture, which merges a parameter into options
|
359
|
-
it "
|
385
|
+
it "passes http options through for get_picture" do
|
360
386
|
options = {:a => 2}
|
361
387
|
# graph call should ultimately receive options as the fourth argument
|
362
388
|
@api.should_receive(:graph_call).with(anything, anything, anything, hash_including(options)).and_return({})
|
@@ -370,34 +396,34 @@ end
|
|
370
396
|
shared_examples_for "Koala GraphAPI with GraphCollection" do
|
371
397
|
describe "when getting a collection" do
|
372
398
|
# GraphCollection methods
|
373
|
-
it "
|
399
|
+
it "gets a GraphCollection when getting connections" do
|
374
400
|
@result = @api.get_connections(KoalaTest.page, "photos")
|
375
401
|
@result.should be_a(Koala::Facebook::GraphCollection)
|
376
402
|
end
|
377
403
|
|
378
|
-
it "
|
404
|
+
it "returns nil if the get_collections call fails with nil" do
|
379
405
|
# this happens sometimes
|
380
406
|
@api.should_receive(:graph_call).and_return(nil)
|
381
407
|
@api.get_connections(KoalaTest.page, "photos").should be_nil
|
382
408
|
end
|
383
409
|
|
384
|
-
it "
|
410
|
+
it "gets a GraphCollection when searching" do
|
385
411
|
result = @api.search("facebook")
|
386
412
|
result.should be_a(Koala::Facebook::GraphCollection)
|
387
413
|
end
|
388
414
|
|
389
|
-
it "
|
415
|
+
it "returns nil if the search call fails with nil" do
|
390
416
|
# this happens sometimes
|
391
417
|
@api.should_receive(:graph_call).and_return(nil)
|
392
418
|
@api.search("facebook").should be_nil
|
393
419
|
end
|
394
420
|
|
395
|
-
it "
|
421
|
+
it "gets a GraphCollection when paging through results" do
|
396
422
|
@results = @api.get_page(["search", {"q"=>"facebook", "limit"=>"25", "until"=> KoalaTest.search_time}])
|
397
423
|
@results.should be_a(Koala::Facebook::GraphCollection)
|
398
424
|
end
|
399
425
|
|
400
|
-
it "
|
426
|
+
it "returns nil if the page call fails with nil" do
|
401
427
|
# this happens sometimes
|
402
428
|
@api.should_receive(:graph_call).and_return(nil)
|
403
429
|
@api.get_page(["search", {"q"=>"facebook", "limit"=>"25", "until"=> KoalaTest.search_time}]).should be_nil
|
@@ -408,48 +434,48 @@ end
|
|
408
434
|
|
409
435
|
shared_examples_for "Koala GraphAPI without an access token" do
|
410
436
|
|
411
|
-
it "
|
437
|
+
it "can't get private data about a user" do
|
412
438
|
result = @api.get_object("koppel")
|
413
439
|
# updated_time should be a pretty fixed test case
|
414
440
|
result["updated_time"].should be_nil
|
415
441
|
end
|
416
442
|
|
417
|
-
it "
|
443
|
+
it "can't get data about 'me'" do
|
418
444
|
lambda { @api.get_object("me") }.should raise_error(Koala::Facebook::APIError)
|
419
445
|
end
|
420
446
|
|
421
|
-
it "
|
447
|
+
it "can't access connections from users" do
|
422
448
|
lambda { @api.get_connections("lukeshepard", "friends") }.should raise_error(Koala::Facebook::APIError)
|
423
449
|
end
|
424
450
|
|
425
|
-
it "
|
451
|
+
it "can't put an object" do
|
426
452
|
lambda { @result = @api.put_object("lukeshepard", "feed", :message => "Hello, world") }.should raise_error(Koala::Facebook::APIError)
|
427
453
|
end
|
428
454
|
|
429
455
|
# these are not strictly necessary as the other put methods resolve to put_object, but are here for completeness
|
430
|
-
it "
|
456
|
+
it "can't post to a feed" do
|
431
457
|
(lambda do
|
432
458
|
attachment = {:name => "OAuth Playground", :link => "http://oauth.twoalex.com/"}
|
433
459
|
@result = @api.put_wall_post("Hello, world", attachment, "contextoptional")
|
434
460
|
end).should raise_error(Koala::Facebook::APIError)
|
435
461
|
end
|
436
462
|
|
437
|
-
it "
|
463
|
+
it "can't comment on an object" do
|
438
464
|
# random public post on the ContextOptional wall
|
439
465
|
lambda { @result = @api.put_comment("7204941866_119776748033392", "The hackathon was great!") }.should raise_error(Koala::Facebook::APIError)
|
440
466
|
end
|
441
467
|
|
442
|
-
it "
|
468
|
+
it "can't like an object" do
|
443
469
|
lambda { @api.put_like("7204941866_119776748033392") }.should raise_error(Koala::Facebook::APIError)
|
444
470
|
end
|
445
471
|
|
446
472
|
# DELETE
|
447
|
-
it "
|
473
|
+
it "can't delete posts" do
|
448
474
|
# test post on the Ruby SDK Test application
|
449
475
|
lambda { @result = @api.delete_object("115349521819193_113815981982767") }.should raise_error(Koala::Facebook::APIError)
|
450
476
|
end
|
451
477
|
|
452
|
-
it "
|
478
|
+
it "can't delete a like" do
|
453
479
|
lambda { @api.delete_like("7204941866_119776748033392") }.should raise_error(Koala::Facebook::APIError)
|
454
480
|
end
|
455
481
|
end
|
data/spec/support/koala_test.rb
CHANGED
@@ -57,16 +57,16 @@ module KoalaTest
|
|
57
57
|
end
|
58
58
|
|
59
59
|
config.after :each do
|
60
|
-
# clean up any objects posted to Facebook
|
61
|
-
|
62
|
-
|
63
|
-
raise "Unable to locate API when passed temporary object to delete!" unless api
|
60
|
+
# if we're working with a real user, clean up any objects posted to Facebook
|
61
|
+
# no need to do so for test users, since they get deleted at the end
|
62
|
+
if @temporary_object_id && KoalaTest.real_user?
|
63
|
+
raise "Unable to locate API when passed temporary object to delete!" unless @api
|
64
64
|
|
65
65
|
# wait 10ms to allow Facebook to propagate data so we can delete it
|
66
66
|
sleep(0.01)
|
67
67
|
|
68
68
|
# clean up any objects we've posted
|
69
|
-
result = (api.delete_object(@temporary_object_id) rescue false)
|
69
|
+
result = (@api.delete_object(@temporary_object_id) rescue false)
|
70
70
|
# if we errored out or Facebook returned false, track that
|
71
71
|
puts "Unable to delete #{@temporary_object_id}: #{result} (probably a photo or video, which can't be deleted through the API)" unless result
|
72
72
|
end
|
@@ -94,19 +94,16 @@ module KoalaTest
|
|
94
94
|
end
|
95
95
|
|
96
96
|
def self.setup_test_users
|
97
|
-
# note: we don't have to delete the two test users explicitly, since the test user specs do that for us
|
98
|
-
# technically, this is a point of brittleness and would break if the tests were run out of order
|
99
|
-
# however, for now we can live with it since it would slow tests way too much to constantly recreate our test users
|
100
97
|
print "Setting up test users..."
|
101
98
|
@test_user_api = Koala::Facebook::TestUsers.new(:app_id => self.app_id, :secret => self.secret)
|
102
99
|
|
103
100
|
RSpec.configure do |config|
|
104
|
-
config.before :
|
101
|
+
config.before :suite do
|
105
102
|
# before each test module, create two test users with specific names and befriend them
|
106
103
|
KoalaTest.create_test_users
|
107
104
|
end
|
108
105
|
|
109
|
-
config.after :
|
106
|
+
config.after :suite do
|
110
107
|
# after each test module, delete the test users to avoid cluttering up the application
|
111
108
|
KoalaTest.destroy_test_users
|
112
109
|
end
|
@@ -116,10 +113,15 @@ module KoalaTest
|
|
116
113
|
end
|
117
114
|
|
118
115
|
def self.create_test_users
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
116
|
+
begin
|
117
|
+
@live_testing_user = @test_user_api.create(true, KoalaTest.testing_permissions, :name => KoalaTest.user1_name)
|
118
|
+
@live_testing_friend = @test_user_api.create(true, KoalaTest.testing_permissions, :name => KoalaTest.user2_name)
|
119
|
+
@test_user_api.befriend(@live_testing_user, @live_testing_friend)
|
120
|
+
self.oauth_token = @live_testing_user["access_token"]
|
121
|
+
rescue Exception => e
|
122
|
+
Kernel.warn("Problem creating test users! #{e.message}")
|
123
|
+
raise
|
124
|
+
end
|
123
125
|
end
|
124
126
|
|
125
127
|
def self.destroy_test_users
|
@@ -144,7 +146,7 @@ module KoalaTest
|
|
144
146
|
|
145
147
|
# Info about the testing environment
|
146
148
|
def self.real_user?
|
147
|
-
!(mock_interface? || @
|
149
|
+
!(mock_interface? || @test_user_api)
|
148
150
|
end
|
149
151
|
|
150
152
|
def self.test_user?
|