koala 2.5.0 → 3.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +4 -2
  3. data/Gemfile +1 -1
  4. data/changelog.md +26 -0
  5. data/lib/koala/api/batch_operation.rb +3 -6
  6. data/lib/koala/api/graph_api.rb +6 -45
  7. data/lib/koala/api/graph_batch_api.rb +1 -2
  8. data/lib/koala/api/graph_collection.rb +1 -5
  9. data/lib/koala/api/graph_error_checker.rb +1 -1
  10. data/lib/koala/api.rb +3 -7
  11. data/lib/koala/errors.rb +1 -1
  12. data/lib/koala/http_service/multipart_request.rb +6 -10
  13. data/lib/koala/http_service/request.rb +139 -0
  14. data/lib/koala/http_service/response.rb +0 -4
  15. data/lib/koala/http_service/uploadable_io.rb +0 -4
  16. data/lib/koala/http_service.rb +16 -68
  17. data/lib/koala/oauth.rb +3 -3
  18. data/lib/koala/version.rb +1 -1
  19. data/lib/koala.rb +2 -1
  20. data/readme.md +5 -26
  21. data/spec/cases/api_spec.rb +1 -7
  22. data/spec/cases/graph_api_batch_spec.rb +12 -22
  23. data/spec/cases/graph_api_spec.rb +0 -19
  24. data/spec/cases/graph_collection_spec.rb +18 -18
  25. data/spec/cases/graph_error_checker_spec.rb +6 -1
  26. data/spec/cases/http_service/request_spec.rb +240 -0
  27. data/spec/cases/http_service_spec.rb +102 -296
  28. data/spec/cases/koala_spec.rb +6 -1
  29. data/spec/cases/oauth_spec.rb +1 -1
  30. data/spec/cases/test_users_spec.rb +4 -1
  31. data/spec/cases/uploadable_io_spec.rb +31 -31
  32. data/spec/fixtures/mock_facebook_responses.yml +0 -37
  33. data/spec/spec_helper.rb +2 -2
  34. data/spec/support/graph_api_shared_examples.rb +6 -142
  35. data/spec/support/koala_test.rb +6 -6
  36. data/spec/support/mock_http_service.rb +6 -6
  37. data/spec/support/uploadable_io_shared_examples.rb +4 -4
  38. metadata +7 -7
  39. data/lib/koala/api/rest_api.rb +0 -135
  40. data/spec/support/rest_api_shared_examples.rb +0 -168
@@ -16,32 +16,32 @@ describe Koala::HTTPService do
16
16
  end
17
17
 
18
18
  describe "DEFAULT_MIDDLEWARE" do
19
- before :each do
20
- @builder = double("Faraday connection builder")
21
- allow(@builder).to receive(:request)
22
- allow(@builder).to receive(:adapter)
23
- allow(@builder).to receive(:use)
24
- end
19
+ class FakeBuilder
20
+ attr_reader :requests, :uses, :adapters
25
21
 
26
- it "is defined" do
27
- expect(Koala::HTTPService.const_defined?("DEFAULT_MIDDLEWARE")).to be_truthy
28
- end
22
+ def use(arg)
23
+ @uses ||= []
24
+ @uses << arg
25
+ end
29
26
 
30
- it "adds multipart" do
31
- expect(@builder).to receive(:use).with(Koala::HTTPService::MultipartRequest)
32
- Koala::HTTPService::DEFAULT_MIDDLEWARE.call(@builder)
33
- end
27
+ def request(arg)
28
+ @requests ||= []
29
+ @requests << arg
30
+ end
34
31
 
35
- it "adds url_encoded" do
36
- expect(@builder).to receive(:request).with(:url_encoded)
37
- Koala::HTTPService::DEFAULT_MIDDLEWARE.call(@builder)
32
+ def adapter(arg)
33
+ @adapters ||= []
34
+ @adapters << arg
35
+ end
38
36
  end
39
37
 
40
- it "uses the default adapter" do
41
- adapter = :testing_now
42
- allow(Faraday).to receive(:default_adapter).and_return(adapter)
43
- expect(@builder).to receive(:adapter).with(adapter)
44
- Koala::HTTPService::DEFAULT_MIDDLEWARE.call(@builder)
38
+ let(:builder) { FakeBuilder.new }
39
+
40
+ it "adds the right default middleware" do
41
+ Koala::HTTPService::DEFAULT_MIDDLEWARE.call(builder)
42
+ expect(builder.requests).to eq([:url_encoded])
43
+ expect(builder.uses).to eq([Koala::HTTPService::MultipartRequest])
44
+ expect(builder.adapters).to eq([Faraday.default_adapter])
45
45
  end
46
46
  end
47
47
 
@@ -52,10 +52,6 @@ describe Koala::HTTPService do
52
52
  expect(defaults[:graph_server]).to eq("graph.facebook.com")
53
53
  end
54
54
 
55
- it "defines the rest server" do
56
- expect(defaults[:rest_server]).to eq("api.facebook.com")
57
- end
58
-
59
55
  it "defines the dialog host" do
60
56
  expect(defaults[:dialog_host]).to eq("www.facebook.com")
61
57
  end
@@ -73,86 +69,21 @@ describe Koala::HTTPService do
73
69
  end
74
70
  end
75
71
 
76
- describe "server" do
77
- describe "with no options" do
78
- it "returns the REST server if options[:rest_api]" do
79
- expect(Koala::HTTPService.server(:rest_api => true)).to eq(
80
- "http://#{Koala.config.rest_server}"
81
- )
82
- end
83
-
84
- it "returns the graph server if !options[:rest_api]" do
85
- expect(Koala::HTTPService.server(:rest_api => false)).to eq(
86
- "http://#{Koala.config.graph_server}"
87
- )
88
- expect(Koala::HTTPService.server({})).to eq(
89
- "http://#{Koala.config.graph_server}"
90
- )
91
- end
92
-
93
- context "with use_ssl" do
94
- it "includes https" do
95
- expect(Koala::HTTPService.server(use_ssl: true)).to eq(
96
- "https://#{Koala.config.graph_server}"
97
- )
98
- end
99
- end
100
- end
101
-
102
- describe "with options[:beta]" do
103
- before :each do
104
- @options = {:beta => true}
105
- end
106
-
107
- it "returns the beta REST server if options[:rest_api]" do
108
- server = Koala::HTTPService.server(@options.merge(:rest_api => true))
109
- expect(server).to match(Regexp.new(Koala.config.rest_server.gsub(/\.facebook/, ".beta.facebook")))
110
- end
111
-
112
- it "returns the beta rest server if !options[:rest_api]" do
113
- server = Koala::HTTPService.server(@options)
114
- expect(server).to match(Regexp.new(Koala.config.graph_server.gsub(/\.facebook/, ".beta.facebook")))
115
- end
116
- end
117
-
118
- describe "with options[:video]" do
119
- before :each do
120
- @options = {:video => true}
121
- end
122
-
123
- it "returns the REST video server if options[:rest_api]" do
124
- server = Koala::HTTPService.server(@options.merge(:rest_api => true))
125
- expect(server).to match(Regexp.new(Koala.config.rest_server.gsub(/\.facebook/, "-video.facebook")))
126
- end
127
-
128
- it "returns the graph video server if !options[:rest_api]" do
129
- server = Koala::HTTPService.server(@options)
130
- expect(server).to match(Regexp.new(Koala.config.graph_server.gsub(/\.facebook/, "-video.facebook")))
131
- end
132
- end
133
- end
134
-
135
72
  describe ".encode_params" do
136
73
  it "returns an empty string if param_hash evaluates to false" do
137
74
  expect(Koala::HTTPService.encode_params(nil)).to eq('')
138
75
  end
139
76
 
140
77
  it "converts values to JSON if the value is not a String" do
141
- val = 'json_value'
142
- not_a_string = 'not_a_string'
143
- allow(not_a_string).to receive(:is_a?).and_return(false)
144
- expect(JSON).to receive(:dump).with(not_a_string).and_return(val)
145
-
146
- string = "hi"
78
+ not_a_string = {not_a_string: 2}
147
79
 
148
80
  args = {
149
- not_a_string => not_a_string,
150
- string => string
81
+ :arg => not_a_string,
151
82
  }
152
83
 
153
84
  result = Koala::HTTPService.encode_params(args)
154
85
  expect(result.split('&').find do |key_and_val|
155
- key_and_val.match("#{not_a_string}=#{val}")
86
+ key_and_val.match("arg=#{CGI.escape not_a_string.to_json}")
156
87
  end).to be_truthy
157
88
  end
158
89
 
@@ -185,244 +116,119 @@ describe Koala::HTTPService do
185
116
  end
186
117
 
187
118
  describe ".make_request" do
188
- before :each do
189
- # Setup stubs for make_request to execute without exceptions
190
- @mock_body = double('Typhoeus response body')
191
- @mock_headers_hash = double({:value => "headers hash"})
192
- @mock_http_response = double("Faraday Response", :status => 200, :headers => @mock_headers_hash, :body => @mock_body)
193
-
194
- @mock_connection = double("Faraday connection")
195
- allow(@mock_connection).to receive(:get).and_return(@mock_http_response)
196
- allow(@mock_connection).to receive(:post).and_return(@mock_http_response)
197
- allow(Faraday).to receive(:new).and_return(@mock_connection)
198
- end
119
+ let(:mock_body) { "a body" }
120
+ let(:mock_headers_hash) { double(value: "headers hash") }
121
+ let(:mock_http_response) { double("Faraday Response", status: 200, headers: mock_headers_hash, body: mock_body) }
199
122
 
200
- describe "creating the Faraday connection" do
201
- it "creates a Faraday connection using the server" do
202
- server = "foo"
203
- allow(Koala::HTTPService).to receive(:server).and_return(server)
204
- expect(Faraday).to receive(:new).with(server, anything).and_return(@mock_connection)
205
- Koala::HTTPService.make_request("anything", {}, "anything")
206
- end
207
-
208
- it "merges Koala::HTTPService.http_options into the request params" do
209
- http_options = {:proxy => "http://user:password@example.org/", :request => { :timeout => 3 }}
210
- Koala::HTTPService.http_options = http_options
211
- expect(Faraday).to receive(:new).with(anything, hash_including(http_options)).and_return(@mock_connection)
212
- Koala::HTTPService.make_request("anything", {}, "get")
213
- end
214
-
215
- it "does not merge invalid Faraday options from Koala::HTTPService.http_options into the request params" do
216
- http_options = {:invalid => "fake param"}
217
- Koala::HTTPService.http_options = http_options
218
- expect(Faraday).to receive(:new).with(anything, hash_not_including(http_options)).and_return(@mock_connection)
219
- Koala::HTTPService.make_request("anything", {}, "get")
220
- end
123
+ let(:verb) { "get" }
124
+ let(:options) { {} }
125
+ let(:request) { Koala::HTTPService::Request.new(path: "/foo", verb: verb, args: {"an" => :arg}, options: options) }
221
126
 
222
- it "merges any provided options into the request params" do
223
- options = {:proxy => "http://user:password@example.org/", :request => { :timeout => 3 }}
224
- expect(Faraday).to receive(:new).with(anything, hash_including(options)).and_return(@mock_connection)
225
- Koala::HTTPService.make_request("anything", {}, "get", options)
226
- end
227
-
228
- it "overrides Koala::HTTPService.http_options with any provided options for the request params" do
229
- options = {:proxy => "http://user:password@proxy.org/", :request => { :timeout => 10 }}
230
- http_options = {:proxy => "http://user:password@example.org/", :request => { :timeout => 3 }}
231
- allow(Koala::HTTPService).to receive(:http_options).and_return(http_options)
232
-
233
- expect(Faraday).to receive(:new).with(anything, hash_including(http_options.merge(options))).and_return(@mock_connection)
234
- Koala::HTTPService.make_request("anything", {}, "get", options)
235
- end
236
-
237
- it "forces use_ssl to true if an access token is present" do
238
- options = {:use_ssl => false}
239
- allow(Koala::HTTPService).to receive(:http_options).and_return(:use_ssl => false)
240
- expect(Faraday).to receive(:new).with(anything, hash_including(:ssl => {:verify => true})).and_return(@mock_connection)
241
- Koala::HTTPService.make_request("anything", {"access_token" => "foo"}, "get", options)
242
- end
243
-
244
- it "defaults verify to true if use_ssl is true" do
245
- expect(Faraday).to receive(:new).with(anything, hash_including(:ssl => {:verify => true})).and_return(@mock_connection)
246
- Koala::HTTPService.make_request("anything", {"access_token" => "foo"}, "get")
247
- end
248
-
249
- it "allows you to set other verify modes if you really want" do
250
- options = {:ssl => {:verify => :foo}}
251
- expect(Faraday).to receive(:new).with(anything, hash_including(options)).and_return(@mock_connection)
252
- Koala::HTTPService.make_request("anything", {"access_token" => "foo"}, "get", options)
127
+ shared_examples_for :making_a_request do
128
+ before :each do
129
+ allow_any_instance_of(Faraday::Connection).to receive(:get).and_return(mock_http_response)
130
+ allow_any_instance_of(Faraday::Connection).to receive(:post).and_return(mock_http_response)
253
131
  end
254
132
 
255
- it "calls server with a json object when provided a format option for post requests" do
256
- # Unstub the now somewhat regrettable stubbing above
257
- allow(Faraday).to receive(:new).and_call_original
133
+ it "makes a Faraday request appropriately" do
134
+ expect_any_instance_of(Faraday::Connection).to receive(verb) do |instance, path, post_params|
135
+ expect(path).to eq(request.path)
136
+ expect(post_params).to eq(request.post_args)
137
+ expect(instance.params).to eq(request.options[:params])
138
+ expect(instance.url_prefix).to eq(URI.parse(request.server))
258
139
 
259
- mock_request_klass = Class.new do
260
- attr_accessor :path, :body, :headers, :status
261
- def initialize
262
- @headers = {}
263
- end
140
+ mock_http_response
264
141
  end
265
142
 
266
- mock_request = mock_request_klass.new
267
- allow_any_instance_of(Faraday::Connection).to receive(:post).and_yield(mock_request)
268
-
269
- path = "California"
270
- args = {:a => 2, :c => "3"}
271
-
272
- Koala::HTTPService.make_request(path, args, "post", format: :json)
273
-
274
- expect(mock_request.path).to eq(path)
275
- expect(mock_request.headers).to eq("Content-Type" => "application/json")
276
- expect(mock_request.body).to eq(args.to_json)
277
- end
278
-
279
- it "calls server with the composite options" do
280
- options = {:a => 2, :c => "3"}
281
- http_options = {:a => :a}
282
- allow(Koala::HTTPService).to receive(:http_options).and_return(http_options)
283
- expect(Koala::HTTPService).to receive(:server).with(hash_including(http_options.merge(options))).and_return("foo")
284
- Koala::HTTPService.make_request("anything", {}, "get", options)
143
+ Koala::HTTPService.make_request(request)
285
144
  end
286
145
 
287
- it "uses the default builder block if HTTPService.faraday_middleware block is not defined" do
288
- block = Proc.new {}
289
- stub_const("Koala::HTTPService::DEFAULT_MIDDLEWARE", block)
290
- allow(Koala::HTTPService).to receive(:faraday_middleware).and_return(nil)
291
- expect(Faraday).to receive(:new).with(anything, anything, &block).and_return(@mock_connection)
292
- Koala::HTTPService.make_request("anything", {}, "get")
293
- end
294
-
295
- it "uses the defined HTTPService.faraday_middleware block if defined" do
296
- block = Proc.new { }
297
- expect(Koala::HTTPService).to receive(:faraday_middleware).and_return(block)
298
- expect(Faraday).to receive(:new).with(anything, anything, &block).and_return(@mock_connection)
299
- Koala::HTTPService.make_request("anything", {}, "get")
300
- end
301
- end
302
-
146
+ it "returns the right response" do
147
+ response = Koala::HTTPService.make_request(request)
148
+ expect(response.status).to eq(mock_http_response.status)
149
+ expect(response.headers).to eq(mock_http_response.headers)
150
+ expect(response.body).to eq(mock_http_response.body)
303
151
 
304
- context "with API versions" do
305
- it "adds a version if specified by Koala.config" do
306
- expect(Koala.config).to receive(:api_version).and_return("v11")
307
- expect(@mock_connection).to receive(:get).with("/v11/anything", anything)
308
- Koala::HTTPService.make_request("anything", {}, "get")
309
152
  end
310
153
 
311
- it "prefers a version set in http_options" do
312
- allow(Koala.config).to receive(:api_version).and_return("v11")
313
- allow(Koala::HTTPService).to receive(:http_options).and_return({ api_version: 'v12' })
314
- expect(@mock_connection).to receive(:get).with("/v12/anything", anything)
315
- Koala::HTTPService.make_request("anything", {}, "get")
316
- end
317
-
318
- it "doesn't add double slashes to the path" do
319
- allow(Koala::HTTPService).to receive(:http_options).and_return({ api_version: 'v12' })
320
- expect(@mock_connection).to receive(:get).with("/v12/anything", anything)
321
- Koala::HTTPService.make_request("/anything", {}, "get")
322
- end
154
+ it "logs verb, url and params to debug" do
155
+ log_message = "#{verb.upcase}: #{request.path} params: #{request.raw_args.inspect}"
156
+ expect(Koala::Utils.logger).to receive(:debug).with(log_message)
323
157
 
324
- it "doesn't add a version if the path already contains one" do
325
- expect(Koala.config).to receive(:api_version).and_return("v11")
326
- expect(@mock_connection).to receive(:get).with("/v12/anything", anything)
327
- Koala::HTTPService.make_request("/v12/anything", {}, "get")
158
+ Koala::HTTPService.make_request(request)
328
159
  end
329
160
  end
330
161
 
331
- it "makes a POST request if the verb isn't get" do
332
- expect(@mock_connection).to receive(:post).and_return(@mock_http_response)
333
- Koala::HTTPService.make_request("anything", {}, "anything")
162
+ context "for gets" do
163
+ it_should_behave_like :making_a_request
334
164
  end
335
165
 
336
- it "includes the verb in the body if the verb isn't get" do
337
- verb = "eat"
338
- expect(@mock_connection).to receive(:post).with(anything, hash_including("method" => verb)).and_return(@mock_http_response)
339
- Koala::HTTPService.make_request("anything", {}, verb)
340
- end
166
+ # we don't need to test delete and put since those are translated into posts
167
+ context "for posts" do
168
+ let(:verb) { "post" }
341
169
 
342
- it "makes a GET request if the verb is get" do
343
- expect(@mock_connection).to receive(:get).and_return(@mock_http_response)
344
- Koala::HTTPService.make_request("anything", {}, "get")
170
+ it_should_behave_like :making_a_request
345
171
  end
346
172
 
347
- describe "for GETs" do
348
- it "submits the arguments in the body" do
349
- # technically this is done for all requests, but you don't send GET requests with files
350
- args = {"a" => :b, "c" => 3}
351
- expect(Faraday).to receive(:new).with(anything, hash_including(:params => args)).and_return(@mock_connection)
352
- Koala::HTTPService.make_request("anything", args, "get")
353
- end
173
+ context "for JSON requests" do
174
+ let(:verb) { "post" }
175
+ let(:options) { {format: :json} }
354
176
 
355
- it "submits nothing to the body" do
356
- # technically this is done for all requests, but you don't send GET requests with files
357
- args = {"a" => :b, "c" => 3}
358
- expect(@mock_connection).to receive(:get).with(anything, {}).and_return(@mock_http_response)
359
- Koala::HTTPService.make_request("anything", args, "get")
360
- end
177
+ it "makes a Faraday request appropriately" do
178
+ expect_any_instance_of(Faraday::Connection).to receive(verb) do |instance, path, &block|
179
+ faraday_request = Faraday::Request.new
180
+ faraday_request.headers = {}
181
+ block.call(faraday_request)
182
+ expect(faraday_request.path).to eq(request.path)
183
+ expect(faraday_request.body).to eq(request.post_args.to_json)
184
+ expect(faraday_request.headers).to include("Content-Type" => "application/json")
361
185
 
362
- it "logs verb, url and params to debug" do
363
- args = {"a" => :b, "c" => 3}
364
- log_message_stem = "GET: anything params: "
365
- expect(Koala::Utils.logger).to receive(:debug) do |log_message|
366
- # unordered hashes are a bane
367
- # Ruby in 1.8 modes tends to return different hash orderings,
368
- # which makes checking the content of the stringified hash hard
369
- # it's enough just to ensure that there's hash content in the string, I think
370
- expect(log_message).to include(log_message_stem)
371
- expect(log_message.match(/\{.*\}/)).not_to be_nil
186
+ mock_http_response
372
187
  end
373
188
 
374
- Koala::HTTPService.make_request("anything", args, "get")
189
+ Koala::HTTPService.make_request(request)
375
190
  end
376
191
  end
377
192
 
378
- describe "for POSTs" do
379
- it "submits the arguments in the body" do
380
- # technically this is done for all requests, but you don't send GET requests with files
381
- args = {"a" => :b, "c" => 3}
382
- expect(@mock_connection).to receive(:post).with(anything, hash_including(args)).and_return(@mock_http_response)
383
- Koala::HTTPService.make_request("anything", args, "post")
384
- end
385
-
386
- it "turns any UploadableIOs to UploadIOs" do
387
- # technically this is done for all requests, but you don't send GET requests with files
388
- upload_io = double("UploadIO")
389
- u = Koala::UploadableIO.new("/path/to/stuff", "img/jpg")
390
- allow(u).to receive(:to_upload_io).and_return(upload_io)
391
- expect(@mock_connection).to receive(:post).with(anything, hash_including("source" => upload_io)).and_return(@mock_http_response)
392
- Koala::HTTPService.make_request("anything", {:source => u}, "post")
393
- end
193
+ it "uses the default builder block if HTTPService.faraday_middleware block is not defined" do
194
+ block = Proc.new { |builder|
195
+ builder.use Koala::HTTPService::MultipartRequest
196
+ builder.request :url_encoded
197
+ builder.use Koala::HTTPService::MultipartRequest
198
+ }
199
+ stub_const("Koala::HTTPService::DEFAULT_MIDDLEWARE", block)
200
+ allow(Koala::HTTPService).to receive(:faraday_middleware).and_return(nil)
394
201
 
395
- it "logs verb, url and params to debug" do
396
- args = {"a" => :b, "c" => 3}
397
- log_message_stem = "POST: anything params: "
398
- expect(Koala::Utils.logger).to receive(:debug) do |log_message|
399
- # unordered hashes are a bane
400
- # Ruby in 1.8 modes tends to return different hash orderings,
401
- # which makes checking the content of the stringified hash hard
402
- # it's enough just to ensure that there's hash content in the string, I think
403
- expect(log_message).to include(log_message_stem)
404
- expect(log_message.match(/\{.*\}/)).not_to be_nil
405
- end
406
- Koala::HTTPService.make_request("anything", args, "post")
202
+ expect_any_instance_of(Faraday::Connection).to receive(:get) do |instance|
203
+ expect(instance.builder.handlers).to eq([
204
+ Koala::HTTPService::MultipartRequest,
205
+ Faraday::Request::UrlEncoded,
206
+ Koala::HTTPService::MultipartRequest
207
+ ])
208
+ mock_http_response
407
209
  end
408
- end
409
- end
410
210
 
411
- describe ".path_contains_api_version?" do
412
- it "works when the path is prefixed by a slash" do
413
- expect(Koala::HTTPService.path_contains_api_version?('/v2.1/anything')).to be true
211
+ Koala::HTTPService.make_request(request)
414
212
  end
415
213
 
416
- it "works when the path is not prefixed by a slash" do
417
- expect(Koala::HTTPService.path_contains_api_version?('v2.1/anything')).to be true
418
- end
214
+ it "uses the defined HTTPService.faraday_middleware block if defined" do
215
+ block = Proc.new { |builder|
216
+ builder.use Koala::HTTPService::MultipartRequest
217
+ builder.request :url_encoded
218
+ builder.use Koala::HTTPService::MultipartRequest
219
+ }
220
+ expect(Koala::HTTPService).to receive(:faraday_middleware).and_return(block)
419
221
 
420
- it "works with versions without a ." do
421
- expect(Koala::HTTPService.path_contains_api_version?('v21/anything')).to be true
422
- end
222
+ expect_any_instance_of(Faraday::Connection).to receive(:get) do |instance|
223
+ expect(instance.builder.handlers).to eq([
224
+ Koala::HTTPService::MultipartRequest,
225
+ Faraday::Request::UrlEncoded,
226
+ Koala::HTTPService::MultipartRequest
227
+ ])
228
+ mock_http_response
229
+ end
423
230
 
424
- it "returns nil for paths without a version" do
425
- expect(Koala::HTTPService.path_contains_api_version?('/anything')).to be false
231
+ Koala::HTTPService.make_request(request)
426
232
  end
427
233
  end
428
234
  end
@@ -19,7 +19,12 @@ describe Koala do
19
19
  verb = "get"
20
20
  options = {:c => :d}
21
21
 
22
- expect(Koala.http_service).to receive(:make_request).with(path, args, verb, options)
22
+ expect(Koala.http_service).to receive(:make_request) do |request|
23
+ expect(request.raw_path).to eq(path)
24
+ expect(request.raw_args).to eq(args)
25
+ expect(request.raw_verb).to eq(verb)
26
+ expect(request.raw_options).to eq(options)
27
+ end
23
28
  Koala.make_request(path, args, verb, options)
24
29
  end
25
30
  end
@@ -584,7 +584,7 @@ describe "Koala::Facebook::OAuth" do
584
584
  # the signed request code is ported directly from Facebook
585
585
  # so we only need to test at a high level that it works
586
586
  it "throws an error if the algorithm is unsupported" do
587
- allow(JSON).to receive(:load).and_return("algorithm" => "my fun algorithm")
587
+ allow(JSON).to receive(:parse).and_return("algorithm" => "my fun algorithm")
588
588
  expect { @oauth.parse_signed_request(@signed_params) }.to raise_error(Koala::Facebook::OAuthSignatureError)
589
589
  end
590
590
 
@@ -265,7 +265,10 @@ describe "Koala::Facebook::TestUsers" do
265
265
  options = {:some_http_option => true}
266
266
  # should come twice, once for each user
267
267
  @stubbed = true
268
- expect(Koala.http_service).to receive(:make_request).with(anything, anything, anything, options).twice.and_return(Koala::HTTPService::Response.new(200, "{}", {}))
268
+ expect(Koala.http_service).to receive(:make_request).twice do |request|
269
+ expect(request.raw_options).to eq(options)
270
+ Koala::HTTPService::Response.new(200, "{}", {})
271
+ end
269
272
  @test_users.befriend(@user1, @user2, options)
270
273
  end
271
274
  end