koala 1.0.0.beta2.1 → 1.0.0.rc

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. data/.gitignore +3 -0
  2. data/CHANGELOG +6 -1
  3. data/Gemfile +3 -0
  4. data/Rakefile +13 -14
  5. data/koala.gemspec +35 -20
  6. data/lib/koala.rb +8 -17
  7. data/lib/koala/graph_api.rb +2 -2
  8. data/lib/koala/http_services.rb +32 -27
  9. data/lib/koala/test_users.rb +4 -4
  10. data/lib/koala/uploadable_io.rb +1 -1
  11. data/spec/cases/api_base_spec.rb +101 -0
  12. data/spec/cases/graph_and_rest_api_spec.rb +31 -0
  13. data/spec/cases/graph_api_spec.rb +25 -0
  14. data/spec/{koala/http_services/http_service_tests.rb → cases/http_services/http_service_spec.rb} +8 -5
  15. data/spec/cases/http_services/net_http_service_spec.rb +350 -0
  16. data/spec/cases/http_services/typhoeus_service_spec.rb +144 -0
  17. data/spec/cases/oauth_spec.rb +374 -0
  18. data/spec/cases/realtime_updates_spec.rb +184 -0
  19. data/spec/cases/rest_api_spec.rb +25 -0
  20. data/spec/{koala/test_users/test_users_tests.rb → cases/test_users_spec.rb} +34 -29
  21. data/spec/cases/uploadable_io_spec.rb +151 -0
  22. data/spec/{koala/assets → fixtures}/beach.jpg +0 -0
  23. data/spec/{facebook_data.yml → fixtures/facebook_data.yml} +5 -5
  24. data/spec/{mock_facebook_responses.yml → fixtures/mock_facebook_responses.yml} +311 -311
  25. data/spec/spec_helper.rb +18 -0
  26. data/spec/support/graph_api_shared_examples.rb +424 -0
  27. data/spec/{koala → support}/live_testing_data_helper.rb +39 -42
  28. data/spec/{mock_http_service.rb → support/mock_http_service.rb} +94 -94
  29. data/spec/{koala/rest_api/rest_api_tests.rb → support/rest_api_shared_examples.rb} +43 -0
  30. data/spec/support/setup_mocks_or_live.rb +52 -0
  31. data/spec/support/uploadable_io_shared_examples.rb +76 -0
  32. metadata +109 -53
  33. data/init.rb +0 -2
  34. data/spec/koala/api_base_tests.rb +0 -102
  35. data/spec/koala/graph_and_rest_api/graph_and_rest_api_no_token_tests.rb +0 -14
  36. data/spec/koala/graph_and_rest_api/graph_and_rest_api_with_token_tests.rb +0 -16
  37. data/spec/koala/graph_api/graph_api_no_access_token_tests.rb +0 -65
  38. data/spec/koala/graph_api/graph_api_tests.rb +0 -85
  39. data/spec/koala/graph_api/graph_api_with_access_token_tests.rb +0 -194
  40. data/spec/koala/graph_api/graph_collection_tests.rb +0 -104
  41. data/spec/koala/http_services/net_http_service_tests.rb +0 -339
  42. data/spec/koala/http_services/typhoeus_service_tests.rb +0 -162
  43. data/spec/koala/oauth/oauth_tests.rb +0 -372
  44. data/spec/koala/realtime_updates/realtime_updates_tests.rb +0 -187
  45. data/spec/koala/rest_api/rest_api_no_access_token_tests.rb +0 -25
  46. data/spec/koala/rest_api/rest_api_with_access_token_tests.rb +0 -38
  47. data/spec/koala/uploadable_io/uploadable_io_tests.rb +0 -246
  48. data/spec/koala_spec.rb +0 -18
  49. data/spec/koala_spec_helper.rb +0 -74
  50. data/spec/koala_spec_without_mocks.rb +0 -19
@@ -1,104 +0,0 @@
1
- # GraphCollection
2
- shared_examples_for "Koala GraphAPI with GraphCollection" do
3
-
4
- it "should create an array-like object" do
5
- call = @api.graph_call("contextoptional/photos")
6
- Koala::Facebook::GraphCollection.new(call, @api).should be_an(Array)
7
- end
8
-
9
- describe "when getting a collection" do
10
- # GraphCollection methods
11
- it "should get a GraphCollection when getting connections" do
12
- @result = @api.get_connections("contextoptional", "photos")
13
- @result.should be_a(Koala::Facebook::GraphCollection)
14
- end
15
-
16
- it "should return nil if the get_collections call fails with nil" do
17
- # this happens sometimes
18
- @api.should_receive(:graph_call).and_return(nil)
19
- @api.get_connections("contextoptional", "photos").should be_nil
20
- end
21
-
22
- it "should get a GraphCollection when searching" do
23
- result = @api.search("facebook")
24
- result.should be_a(Koala::Facebook::GraphCollection)
25
- end
26
-
27
- it "should return nil if the search call fails with nil" do
28
- # this happens sometimes
29
- @api.should_receive(:graph_call).and_return(nil)
30
- @api.search("facebook").should be_nil
31
- end
32
-
33
- it "should get a GraphCollection when paging through results" do
34
- @results = @api.get_page(["search", {"q"=>"facebook", "limit"=>"25", "until"=>"2010-09-23T21:17:33+0000"}])
35
- @results.should be_a(Koala::Facebook::GraphCollection)
36
- end
37
-
38
- it "should return nil if the page call fails with nil" do
39
- # this happens sometimes
40
- @api.should_receive(:graph_call).and_return(nil)
41
- @api.get_page(["search", {"q"=>"facebook", "limit"=>"25", "until"=>"2010-09-23T21:17:33+0000"}]).should be_nil
42
- end
43
-
44
- # GraphCollection attributes
45
- describe "the GraphCollection" do
46
- before(:each) do
47
- @result = @api.get_connections("contextoptional", "photos")
48
- end
49
-
50
- it "should have a read-only paging attribute" do
51
- lambda { @result.paging }.should_not raise_error
52
- lambda { @result.paging = "paging" }.should raise_error(NoMethodError)
53
- end
54
-
55
- describe "when getting a whole page" do
56
- before(:each) do
57
- @second_page = stub("page of Fb graph results")
58
- @base = stub("base")
59
- @args = stub("args")
60
- @page_of_results = stub("page of results")
61
- end
62
-
63
- it "should return the previous page of results" do
64
- @result.should_receive(:previous_page_params).and_return([@base, @args])
65
- @api.should_receive(:graph_call).with(@base, @args).and_return(@second_page)
66
- Koala::Facebook::GraphCollection.should_receive(:new).with(@second_page, @api).and_return(@page_of_results)
67
-
68
- @result.previous_page.should == @page_of_results
69
- end
70
-
71
- it "should return the next page of results" do
72
- @result.should_receive(:next_page_params).and_return([@base, @args])
73
- @api.should_receive(:graph_call).with(@base, @args).and_return(@second_page)
74
- Koala::Facebook::GraphCollection.should_receive(:new).with(@second_page, @api).and_return(@page_of_results)
75
-
76
- @result.next_page.should == @page_of_results
77
- end
78
-
79
- it "should return nil it there are no other pages" do
80
- %w{next previous}.each do |this|
81
- @result.should_receive("#{this}_page_params".to_sym).and_return(nil)
82
- @result.send("#{this}_page").should == nil
83
- end
84
- end
85
- end
86
-
87
- describe "when parsing page paramters" do
88
- before(:each) do
89
- @graph_collection = Koala::Facebook::GraphCollection.new({"data" => []}, Koala::Facebook::GraphAPI.new)
90
- end
91
-
92
- it "should return the base as the first array entry" do
93
- base = "url_path"
94
- @graph_collection.parse_page_url("anything.com/#{base}?anything").first.should == base
95
- end
96
-
97
- it "should return the arguments as a hash as the last array entry" do
98
- args_hash = {"one" => "val_one", "two" => "val_two"}
99
- @graph_collection.parse_page_url("anything.com/anything?#{args_hash.map {|k,v| "#{k}=#{v}" }.join("&")}").last.should == args_hash
100
- end
101
- end
102
- end
103
- end
104
- end
@@ -1,339 +0,0 @@
1
- require 'koala/http_services'
2
- class NetHTTPServiceTests < Test::Unit::TestCase
3
- module Bear
4
- include Koala::NetHTTPService
5
- end
6
-
7
- describe "NetHTTPService module holder class Bear" do
8
- before :each do
9
- # reset the always_use_ssl parameter
10
- Bear.always_use_ssl = nil
11
- end
12
-
13
- it "should define a make_request static module method" do
14
- Bear.respond_to?(:make_request).should be_true
15
- end
16
-
17
- it "should include the Koala::HTTPService module defining common features" do
18
- Bear.included_modules.include?(Koala::HTTPService).should be_true
19
- end
20
-
21
- describe "when making a request" do
22
- before(:each) do
23
- # Setup stubs for make_request to execute without exceptions
24
- @mock_http_response = stub('Net::HTTPResponse', :code => 1)
25
- @mock_body = stub('Net::HTTPResponse body')
26
- @http_request_result = [@mock_http_response, @mock_body]
27
-
28
- # to_ary is called in Ruby 1.9 to provide backwards compatibility
29
- # with the response, body = http.get() syntax we use
30
- @mock_http_response.stub!(:to_ary).and_return(@http_request_result)
31
-
32
- @http_yield_mock = mock('Net::HTTP start yielded object')
33
-
34
- @http_yield_mock.stub(:post).and_return(@http_request_result)
35
- @http_yield_mock.stub(:get).and_return(@http_request_result)
36
-
37
- @http_mock = stub('Net::HTTP object', 'use_ssl=' => true, 'verify_mode=' => true)
38
- @http_mock.stub(:start).and_yield(@http_yield_mock)
39
-
40
- Net::HTTP.stub(:new).and_return(@http_mock)
41
- end
42
-
43
- describe "the connection" do
44
- it "should use POST if verb is not GET" do
45
- @http_yield_mock.should_receive(:post).and_return(@mock_http_response)
46
- @http_mock.should_receive(:start).and_yield(@http_yield_mock)
47
-
48
- Bear.make_request('anything', {}, 'anything')
49
- end
50
-
51
- it "should use GET if that verb is specified" do
52
- @http_yield_mock.should_receive(:get).and_return(@mock_http_response)
53
- @http_mock.should_receive(:start).and_yield(@http_yield_mock)
54
-
55
- Bear.make_request('anything', {}, 'get')
56
- end
57
-
58
- it "should add the method to the arguments if it's not get or post" do
59
- args = {}
60
- method = "telekenesis"
61
- # since the arguments get encoded later, we'll test for merge!
62
- # even though that's somewhat testing internal implementation
63
- args.should_receive(:merge!).with(:method => method)
64
-
65
- Bear.make_request('anything', args, method)
66
- end
67
- end
68
-
69
- describe "if the request has an access token" do
70
- before :each do
71
- @args = {"access_token" => "123"}
72
- end
73
-
74
- it "should use SSL" do
75
- @http_mock.should_receive('use_ssl=').with(true)
76
-
77
- Bear.make_request('anything', @args, 'anything')
78
- end
79
-
80
- it "should set the port to 443" do
81
- Net::HTTP.should_receive(:new).with(anything, 443).and_return(@http_mock)
82
-
83
- Bear.make_request('anything', @args, 'anything')
84
- end
85
- end
86
-
87
- describe "if always_use_ssl is true" do
88
- before :each do
89
- Bear.always_use_ssl = true
90
- end
91
-
92
- it "should use SSL" do
93
- @http_mock.should_receive('use_ssl=').with(true)
94
-
95
- Bear.make_request('anything', {}, 'anything')
96
- end
97
-
98
- it "should set the port to 443" do
99
- Net::HTTP.should_receive(:new).with(anything, 443).and_return(@http_mock)
100
-
101
- Bear.make_request('anything', {}, 'anything')
102
- end
103
- end
104
-
105
- describe "if the use_ssl option is provided" do
106
- it "should use SSL" do
107
- @http_mock.should_receive('use_ssl=').with(true)
108
-
109
- Bear.make_request('anything', {}, 'anything', :use_ssl => true)
110
- end
111
-
112
- it "should set the port to 443" do
113
- Net::HTTP.should_receive(:new).with(anything, 443).and_return(@http_mock)
114
-
115
- Bear.make_request('anything', {}, 'anything', :use_ssl => true)
116
- end
117
- end
118
-
119
- describe "if there's no token and always_use_ssl isn't true" do
120
- it "should not use SSL" do
121
- @http_mock.should_not_receive('use_ssl=')
122
- Bear.make_request('anything', {}, 'anything')
123
- end
124
-
125
- it "should not set the port" do
126
- Net::HTTP.should_receive(:new).with(anything, nil).and_return(@http_mock)
127
- Bear.make_request('anything', {}, 'anything')
128
- end
129
- end
130
-
131
- it "should use the graph server by default" do
132
- Net::HTTP.should_receive(:new).with(Koala::Facebook::GRAPH_SERVER, anything).and_return(@http_mock)
133
- Bear.make_request('anything', {}, 'anything')
134
- end
135
-
136
- it "should use the REST server if the :rest_api option is true" do
137
- Net::HTTP.should_receive(:new).with(Koala::Facebook::REST_SERVER, anything).and_return(@http_mock)
138
- Bear.make_request('anything', {}, 'anything', :rest_api => true)
139
- end
140
-
141
- it "no longer turns off vertificate validaiton warnings" do
142
- @http_mock.should_not_receive('verify_mode=')
143
-
144
- Bear.make_request('anything', {}, 'anything')
145
- end
146
-
147
- it "should start an HTTP connection" do
148
- @http_mock.should_receive(:start).and_yield(@http_yield_mock)
149
- Bear.make_request('anything', {}, 'anything')
150
- end
151
-
152
- describe "via POST" do
153
- it "should use Net::HTTP to make a POST request" do
154
- @http_yield_mock.should_receive(:post).and_return(@http_request_result)
155
-
156
- Bear.make_request('anything', {}, 'post')
157
- end
158
-
159
- it "should go to the specified path adding a / if it doesn't exist" do
160
- path = mock('Path')
161
- @http_yield_mock.should_receive(:post).with(path, anything).and_return(@http_request_result)
162
-
163
- Bear.make_request(path, {}, 'post')
164
- end
165
-
166
- it "should use encoded parameters" do
167
- args = {}
168
- params = mock('Encoded parameters')
169
- Bear.should_receive(:encode_params).with(args).and_return(params)
170
-
171
- @http_yield_mock.should_receive(:post).with(anything, params).and_return(@http_request_result)
172
-
173
- Bear.make_request('anything', args, 'post')
174
- end
175
-
176
- describe "with multipart/form-data" do
177
- before(:each) do
178
- Bear.stub(:encode_multipart_params)
179
- Bear.stub("params_require_multipart?").and_return(true)
180
-
181
- @multipart_request_stub = stub('Stub Multipart Request')
182
- Net::HTTP::Post::Multipart.stub(:new).and_return(@multipart_request_stub)
183
-
184
- @file_stub = stub('fake File', "kind_of?" => true, "path" => 'anypath.jpg')
185
-
186
- @http_yield_mock.stub(:request).with(@multipart_request_stub).and_return(@http_request_result)
187
- end
188
-
189
- it "should use multipart/form-data if any parameter is a valid file hash" do
190
- @http_yield_mock.should_receive(:request).with(@multipart_request_stub).and_return(@http_request_result)
191
-
192
- Bear.make_request('anything', {}, 'post')
193
- end
194
-
195
- it "should use the given request path for the request" do
196
- args = {"file" => @file_stub}
197
- expected_path = 'expected/path'
198
-
199
- Net::HTTP::Post::Multipart.should_receive(:new).with(expected_path, anything).and_return(@multipart_request_stub)
200
-
201
- Bear.make_request(expected_path, {}, 'post')
202
- end
203
-
204
- it "should use multipart encoded arguments for the request" do
205
- args = {"file" => @file_stub}
206
- expected_params = stub('Stub Multipart Params')
207
-
208
- Bear.should_receive(:encode_multipart_params).with(args).and_return(expected_params)
209
- Net::HTTP::Post::Multipart.should_receive(:new).with(anything, expected_params).and_return(@multipart_request_stub)
210
-
211
- Bear.make_request('anything', args, 'post')
212
- end
213
- end
214
- end
215
-
216
- describe "via GET" do
217
- it "should use Net::HTTP to make a GET request" do
218
- @http_yield_mock.should_receive(:get).and_return(@http_request_result)
219
-
220
- Bear.make_request('anything', {}, 'get')
221
- end
222
-
223
- it "should use the correct path, including arguments" do
224
- path = mock('Path')
225
- params = mock('Encoded parameters')
226
- args = {}
227
-
228
- Bear.should_receive(:encode_params).with(args).and_return(params)
229
- @http_yield_mock.should_receive(:get).with("#{path}?#{params}").and_return(@http_request_result)
230
-
231
- Bear.make_request(path, args, 'get')
232
- end
233
- end
234
-
235
- describe "the returned value" do
236
- before(:each) do
237
- @response = Bear.make_request('anything', {}, 'anything')
238
- end
239
-
240
- it "should return a Koala::Response object" do
241
- @response.class.should == Koala::Response
242
- end
243
-
244
- it "should return a Koala::Response with the right status" do
245
- @response.status.should == @mock_http_response.code
246
- end
247
-
248
- it "should reutrn a Koala::Response with the right body" do
249
- @response.body.should == @mock_body
250
- end
251
-
252
- it "should return a Koala::Response with the Net::HTTPResponse object as headers" do
253
- @response.headers.should == @mock_http_response
254
- end
255
- end # describe return value
256
- end # describe when making a request
257
-
258
- describe "when encoding parameters" do
259
- it "should return an empty string if param_hash evaluates to false" do
260
- Bear.encode_params(nil).should == ''
261
- end
262
-
263
- it "should convert values to JSON if the value is not a String" do
264
- val = 'json_value'
265
- not_a_string = 'not_a_string'
266
- not_a_string.stub(:class).and_return('NotAString')
267
- not_a_string.should_receive(:to_json).and_return(val)
268
-
269
- string = "hi"
270
-
271
- args = {
272
- not_a_string => not_a_string,
273
- string => string
274
- }
275
-
276
- result = Bear.encode_params(args)
277
- result.split('&').find do |key_and_val|
278
- key_and_val.match("#{not_a_string}=#{val}")
279
- end.should be_true
280
- end
281
-
282
- it "should escape all values" do
283
- args = Hash[*(1..4).map {|i| [i.to_s, "Value #{i}($"]}.flatten]
284
-
285
- result = Bear.encode_params(args)
286
- result.split('&').each do |key_val|
287
- key, val = key_val.split('=')
288
- val.should == CGI.escape(args[key])
289
- end
290
- end
291
-
292
- it "should convert all keys to Strings" do
293
- args = Hash[*(1..4).map {|i| [i, "val#{i}"]}.flatten]
294
-
295
- result = Bear.encode_params(args)
296
- result.split('&').each do |key_val|
297
- key, val = key_val.split('=')
298
- key.should == args.find{|key_val_arr| key_val_arr.last == val}.first.to_s
299
- end
300
- end
301
- end
302
-
303
- describe "when detecting if multipart posting is needed" do
304
- it "should be true if any parameter value requires multipart post" do
305
- koala_io = mock("Koala::IO")
306
- koala_io.should_receive(:kind_of?).with(Koala::UploadableIO).and_return(true)
307
-
308
- args = {
309
- "key1" => "val",
310
- "key2" => "val",
311
- "key3" => koala_io,
312
- "key4" => "val"
313
- }
314
-
315
- Bear.params_require_multipart?(args).should be_true
316
- end
317
-
318
- describe "when encoding multipart/form-data params" do
319
- it "should replace Koala::UploadableIO values with UploadIO values" do
320
- upload_io = UploadIO.new(__FILE__, "fake type")
321
-
322
- uploadable_io = stub('Koala::UploadableIO')
323
- uploadable_io.should_receive(:kind_of?).with(Koala::UploadableIO).and_return(true)
324
- uploadable_io.should_receive(:to_upload_io).and_return(upload_io)
325
- args = {
326
- "not_a_file" => "not a file",
327
- "file" => uploadable_io
328
- }
329
-
330
- result = Bear.encode_multipart_params(args)
331
-
332
- result["not_a_file"] == args["not_a_file"]
333
- result["file"] == upload_io
334
- end
335
- end
336
-
337
- end
338
- end
339
- end
@@ -1,162 +0,0 @@
1
- require 'koala/http_services'
2
- class TyphoeusServiceTests < Test::Unit::TestCase
3
- module Bear
4
- include Koala::TyphoeusService
5
- end
6
-
7
- describe "TyphoeusService module holder class Bear" do
8
- before :each do
9
- # reset the always_use_ssl parameter
10
- Bear.always_use_ssl = nil
11
- end
12
-
13
- it "should define a make_request static module method" do
14
- Bear.respond_to?(:make_request).should be_true
15
- end
16
-
17
- it "should include the Koala::HTTPService module defining common features" do
18
- Bear.included_modules.include?(Koala::HTTPService).should be_true
19
- end
20
-
21
- describe "when making a request" do
22
- before(:each) do
23
- # Setup stubs for make_request to execute without exceptions
24
- @mock_body = stub('Typhoeus response body')
25
- @mock_headers_hash = stub({:value => "headers hash"})
26
- @mock_http_response = stub(Typhoeus::Response, :code => 1, :headers_hash => @mock_headers_hash, :body => @mock_body)
27
-
28
- # Typhoeus is an included module, so we stub methods on Bear itself
29
- Bear.stub(:post).and_return(@mock_http_response)
30
- Bear.stub(:get).and_return(@mock_http_response)
31
- end
32
-
33
- it "should use POST if verb is not GET" do
34
- Bear.should_receive(:post).and_return(@mock_http_response)
35
- Bear.make_request('anything', {}, 'anything')
36
- end
37
-
38
- it "should use GET if that verb is specified" do
39
- Bear.should_receive(:get).and_return(@mock_http_response)
40
- Bear.make_request('anything', {}, 'get')
41
- end
42
-
43
- describe "the connection" do
44
- it "should use SSL if the request has an access token" do
45
- Bear.should_receive(:post).with(/https\:/, anything)
46
-
47
- Bear.make_request('anything', {"access_token" => "123"}, 'anything')
48
- end
49
-
50
- it "should use SSL if always_use_ssl is true, even if there's no token" do
51
- Bear.should_receive(:post).with(/https\:/, anything)
52
-
53
- Bear.always_use_ssl = true
54
- Bear.make_request('anything', {}, 'anything')
55
- end
56
-
57
- it "should use SSL if the :use_ssl option is provided, even if there's no token" do
58
- Bear.should_receive(:post).with(/https\:/, anything)
59
-
60
- Bear.always_use_ssl = true
61
- Bear.make_request('anything', {}, 'anything', :use_ssl => true)
62
- end
63
-
64
- it "should not use SSL if always_use_ssl is false and there's no token" do
65
- Bear.should_receive(:post).with(/http\:/, anything)
66
-
67
- Bear.make_request('anything', {}, 'anything')
68
- end
69
-
70
- it "should use the graph server by default" do
71
- Bear.should_receive(:post).with(Regexp.new(Koala::Facebook::GRAPH_SERVER), anything)
72
-
73
- Bear.make_request('anything', {}, 'anything')
74
- end
75
-
76
- it "should use the REST server if the :rest_api option is true" do
77
- Bear.should_receive(:post).with(Regexp.new(Koala::Facebook::REST_SERVER), anything)
78
-
79
- Bear.make_request('anything', {}, 'anything', :rest_api => true)
80
- end
81
- end
82
-
83
- it "should pass the arguments to Typhoeus under the :params key" do
84
- args = {:a => 2}
85
- Bear.should_receive(:post).with(anything, hash_including(:params => args))
86
-
87
- Bear.make_request('anything', args, "post")
88
- end
89
-
90
- it "should add the method to the arguments if the method isn't get or post" do
91
- method = "telekenesis"
92
- Bear.should_receive(:post).with(anything, hash_including(:params => {:method => method}))
93
-
94
- Bear.make_request('anything', {}, method)
95
- end
96
-
97
- it "should pass :typhoeus_options to Typhoeus if provided" do
98
- t_options = {:a => :b}
99
- Bear.should_receive(:post).with(anything, hash_including(t_options))
100
-
101
- Bear.make_request("anything", {}, "post", :typhoeus_options => t_options)
102
- end
103
-
104
- it "should include the path in the request" do
105
- path = "/a/b/c/1"
106
- Bear.should_receive(:post).with(Regexp.new(path), anything)
107
-
108
- Bear.make_request(path, {}, "post")
109
- end
110
-
111
- describe "the returned value" do
112
- before(:each) do
113
- @response = Bear.make_request('anything', {}, 'anything')
114
- end
115
-
116
- it "should return a Koala::Response object" do
117
- @response.class.should == Koala::Response
118
- end
119
-
120
- it "should return a Koala::Response with the right status" do
121
- @response.status.should == @mock_http_response.code
122
- end
123
-
124
- it "should reutrn a Koala::Response with the right body" do
125
- @response.body.should == @mock_body
126
- end
127
-
128
- it "should return a Koala::Response with the Net::HTTPResponse object as headers" do
129
- @response.headers.should == @mock_headers_hash
130
- end
131
- end # describe return value
132
- end
133
-
134
- describe "with file upload" do
135
- it "should include an interface to NetHTTPService called NetHTTPInterface" do
136
- # we should be able to access it
137
- lambda { Koala::TyphoeusService::NetHTTPInterface }.should_not raise_exception(Exception)
138
- Koala::TyphoeusService::NetHTTPInterface.included_modules.include?(Koala::NetHTTPService).should be_true
139
- end
140
-
141
- it "should call the NetHTTPInterface if multipart is required" do
142
- method = "any_method"
143
- args = {}
144
- verb = "get"
145
- options = {}
146
-
147
- Bear.stub(:params_require_multipart?).and_return(true)
148
- Koala::TyphoeusService::NetHTTPInterface.should_receive(:make_request).with(method, args, verb, options)
149
-
150
- Bear.make_request(method, args, verb, options)
151
- end
152
-
153
- # Typhoeus file uploads currently don't work
154
- # for live tests, run the Graph API tests with Typhoues, which will run file uploads
155
- # it "should pass any files directly on to Typhoues" do
156
- # args = {:file => File.new(__FILE__, "r")}
157
- # Bear.should_receive(:post).with(anything, hash_including(:params => args)).and_return(Typhoeus::Response.new)
158
- # Bear.make_request("anything", args, :post)
159
- # end
160
- end
161
- end
162
- end