active_rest_client 1.0.6 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,11 +5,11 @@ describe ActiveRestClient::Recording do
5
5
  class MyObject1
6
6
  include ActiveRestClient::Recording
7
7
  end
8
- expect(MyObject1.record_response?).to be_false
8
+ expect(MyObject1.record_response?).to be_falsey
9
9
  MyObject1.record_response do
10
10
  puts "Hello world"
11
11
  end
12
- expect(MyObject1.record_response?).to be_true
12
+ expect(MyObject1.record_response?).to be_truthy
13
13
  end
14
14
 
15
15
  it "remembers a block given to it to later be called back" do
@@ -22,9 +22,12 @@ describe ActiveRestClient::Request do
22
22
  get :all, "/", :has_many => {:expenses => ExampleOtherClient}
23
23
  get :babies, "/babies", :has_many => {:children => ExampleOtherClient}
24
24
  get :headers, "/headers"
25
+ put :headers_default, "/headers_default"
26
+ put :headers_json, "/headers_json", request_body_type: :json
25
27
  get :find, "/:id"
26
28
  get :change, "/change"
27
29
  post :create, "/create"
30
+ post :test_encoding, "/encoding", request_body_type: :json
28
31
  put :update, "/put/:id"
29
32
  delete :remove, "/remove/:id"
30
33
  get :hal, "/hal", fake:"{\"_links\":{\"child\": {\"href\": \"/child/1\"}, \"other\": {\"href\": \"/other/1\"}, \"cars\":[{\"href\": \"/car/1\", \"name\":\"car1\"}, {\"href\": \"/car/2\", \"name\":\"car2\"}, {\"href\": \"/car/not-embed\", \"name\":\"car_not_embed\"} ], \"lazy\": {\"href\": \"/lazy/load\"}, \"invalid\": [{\"href\": \"/invalid/1\"}]}, \"_embedded\":{\"other\":{\"name\":\"Jane\"},\"child\":{\"name\":\"Billy\"}, \"cars\":[{\"_links\": {\"self\": {\"href\": \"/car/1\"} }, \"make\": \"Bugatti\", \"model\": \"Veyron\"}, {\"_links\": {\"self\": {\"href\": \"/car/2\"} }, \"make\": \"Ferrari\", \"model\": \"F458 Italia\"} ], \"invalid\": [{\"present\":true, \"_links\": {} } ] } }", has_many:{other:ExampleOtherClient}
@@ -33,6 +36,13 @@ describe ActiveRestClient::Request do
33
36
  get :defaults, "/defaults", defaults:{overwrite:"no", persist:"yes"}
34
37
  end
35
38
 
39
+ class AuthenticatedExampleClient < ActiveRestClient::Base
40
+ base_url "http://www.example.com"
41
+ username "john"
42
+ password "smith"
43
+ get :all, "/"
44
+ end
45
+
36
46
  class LazyLoadedExampleClient < ExampleClient
37
47
  base_url "http://www.example.com"
38
48
  lazy_load!
@@ -56,86 +66,109 @@ describe ActiveRestClient::Request do
56
66
  post :save, "/save"
57
67
  end
58
68
 
59
- ActiveRestClient::Request.any_instance.stub(:read_cached_response)
69
+ allow_any_instance_of(ActiveRestClient::Request).to receive(:read_cached_response)
60
70
  end
61
71
 
62
72
  it "should get an HTTP connection when called" do
63
73
  connection = double(ActiveRestClient::Connection).as_null_object
64
- ActiveRestClient::ConnectionManager.should_receive(:get_connection).and_return(connection)
65
- connection.should_receive(:get).with("/", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
74
+ expect(ActiveRestClient::ConnectionManager).to receive(:get_connection).with("http://www.example.com").and_return(connection)
75
+ expect(connection).to receive(:get).with("/", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
66
76
  ExampleClient.all
67
77
  end
68
78
 
79
+ it "should get an HTTP connection with authentication when called" do
80
+ connection = double(ActiveRestClient::Connection).as_null_object
81
+ expect(ActiveRestClient::ConnectionManager).to receive(:get_connection).with("http://john:smith@www.example.com").and_return(connection)
82
+ expect(connection).to receive(:get).with("/", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
83
+ AuthenticatedExampleClient.all
84
+ end
85
+
69
86
  it "should get an HTTP connection when called and call get on it" do
70
- ActiveRestClient::Connection.any_instance.should_receive(:get).with("/", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
87
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
71
88
  ExampleClient.all
72
89
  end
73
90
 
74
91
  it "should get an HTTP connection when called and call delete on it" do
75
- ActiveRestClient::Connection.any_instance.should_receive(:delete).with("/remove/1", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
92
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:delete).with("/remove/1", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
76
93
  ExampleClient.remove(id:1)
77
94
  end
78
95
 
79
96
  it "should work with faraday response objects" do
80
97
  response = Faraday::Response.new
81
- response.stub(:body).and_return({}.to_json)
82
- ActiveRestClient::Connection.any_instance.should_receive(:get).and_return(response)
98
+ allow(response).to receive(:body).and_return({}.to_json)
99
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).and_return(response)
83
100
  expect { ExampleClient.all }.to_not raise_error
84
101
  end
85
102
 
86
103
  it "should pass through get parameters" do
87
- ActiveRestClient::Connection.any_instance.should_receive(:get).with("/?debug=true", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
104
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/?debug=true", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
88
105
  ExampleClient.all debug:true
89
106
  end
90
107
 
91
108
  it "should pass through get parameters, using defaults specified" do
92
- ActiveRestClient::Connection.any_instance.should_receive(:get).with("/defaults?overwrite=yes&persist=yes", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
109
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/defaults?overwrite=yes&persist=yes", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
93
110
  ExampleClient.defaults overwrite:"yes"
94
111
  end
95
112
 
96
113
  it "should pass through url parameters" do
97
- ActiveRestClient::Connection.any_instance.should_receive(:get).with("/1234", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
114
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/1234", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
98
115
  ExampleClient.find id:1234
99
116
  end
100
117
 
101
118
  it "should accept an integer as the only parameter and use it as id" do
102
- ActiveRestClient::Connection.any_instance.should_receive(:get).with("/1234", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
119
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/1234", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
103
120
  ExampleClient.find(1234)
104
121
  end
105
122
 
106
123
  it "should accept a string as the only parameter and use it as id" do
107
- ActiveRestClient::Connection.any_instance.should_receive(:get).with("/1234", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
124
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/1234", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
108
125
  ExampleClient.find("1234")
109
126
  end
110
127
 
111
128
  it "should pass through url parameters and get parameters" do
112
- ActiveRestClient::Connection.any_instance.should_receive(:get).with("/1234?debug=true", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"result\":true}", headers:{}))
129
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/1234?debug=true", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"result\":true}", headers:{}))
113
130
  ExampleClient.find id:1234, debug:true
114
131
  end
115
132
 
116
133
  it "should pass through url parameters and put parameters" do
117
- ActiveRestClient::Connection.any_instance.should_receive(:put).with("/put/1234", "debug=true", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"result\":true}", headers:{}))
134
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:put).with("/put/1234", "debug=true", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"result\":true}", headers:{}))
118
135
  ExampleClient.update id:1234, debug:true
119
136
  end
120
137
 
121
138
  it "should encode the body in a form-encoded format by default" do
122
- ActiveRestClient::Connection.any_instance.should_receive(:put).with("/put/1234", "debug=true&test=foo", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"result\":true}", headers:{}))
139
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:put).with("/put/1234", "debug=true&test=foo", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"result\":true}", headers:{}))
123
140
  ExampleClient.update id:1234, debug:true, test:'foo'
124
141
  end
125
142
 
126
143
  it "should encode the body in a JSON format if specified" do
127
- ActiveRestClient::Connection.any_instance.should_receive(:put).with("/put/1234", %q({"debug":true,"test":"foo"}), an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"result\":true}", headers:{}))
144
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:put).with("/put/1234", %q({"debug":true,"test":"foo"}), an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"result\":true}", headers:{}))
128
145
  ExampleClient.request_body_type :json
129
146
  ExampleClient.update id:1234, debug:true, test:'foo'
130
147
  end
131
148
 
149
+ it "allows forcing a request_body_type per request" do
150
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:post).with("/encoding", %q({"id":1234,"test":"something"}), an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"result\":true}", headers:{}))
151
+ ExampleClient.request_body_type :form_encoded # Should be ignored and the per_method :json used
152
+ ExampleClient.test_encoding id:1234, test: "something"
153
+ end
154
+
132
155
  it "should pass through custom headers" do
133
- ActiveRestClient::Connection.any_instance.should_receive(:get).with("/headers", hash_including("X-My-Header" => "myvalue")).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
156
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/headers", hash_including("X-My-Header" => "myvalue")).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
134
157
  ExampleClient.headers
135
158
  end
136
159
 
160
+ it "should set request header with content-type for default" do
161
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:put).with("/headers_default", "", hash_including("Content-Type" => "application/x-www-form-urlencoded")).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
162
+ ExampleClient.headers_default
163
+ end
164
+
165
+ it "should set request header with content-type for JSON" do
166
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:put).with("/headers_json", "{}", hash_including("Content-Type" => "application/json")).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
167
+ ExampleClient.headers_json
168
+ end
169
+
137
170
  it "should parse JSON to give a nice object" do
138
- ActiveRestClient::Connection.any_instance.should_receive(:put).with("/put/1234", "debug=true", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"result\":true, \"list\":[1,2,3,{\"test\":true}], \"created_at\":\"2012-03-04T01:02:03Z\", \"child\":{\"grandchild\":{\"test\":true}}}", headers:{}))
171
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:put).with("/put/1234", "debug=true", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"result\":true, \"list\":[1,2,3,{\"test\":true}], \"created_at\":\"2012-03-04T01:02:03Z\", \"child\":{\"grandchild\":{\"test\":true}}}", headers:{}))
139
172
  object = ExampleClient.update id:1234, debug:true
140
173
  expect(object.result).to eq(true)
141
174
  expect(object.list.first).to eq(1)
@@ -177,13 +210,13 @@ describe ActiveRestClient::Request do
177
210
  end
178
211
 
179
212
  it "should log faked responses" do
180
- ActiveRestClient::Logger.stub(:debug)
181
- ActiveRestClient::Logger.should_receive(:debug).with {|*args| args.first["Faked response found"]}
213
+ allow(ActiveRestClient::Logger).to receive(:debug)
214
+ expect(ActiveRestClient::Logger).to receive(:debug).with(/Faked response found/)
182
215
  ExampleClient.fake id:1234, debug:true
183
216
  end
184
217
 
185
218
  it "should parse an array within JSON to be a result iterator" do
186
- ActiveRestClient::Connection.any_instance.should_receive(:put).with("/put/1234", "debug=true", an_instance_of(Hash)).and_return(OpenStruct.new(body:"[{\"first_name\":\"Johnny\"}, {\"first_name\":\"Billy\"}]", status:200, headers:{}))
219
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:put).with("/put/1234", "debug=true", an_instance_of(Hash)).and_return(OpenStruct.new(body:"[{\"first_name\":\"Johnny\"}, {\"first_name\":\"Billy\"}]", status:200, headers:{}))
187
220
  object = ExampleClient.update id:1234, debug:true
188
221
  expect(object).to be_instance_of(ActiveRestClient::ResultIterator)
189
222
  expect(object.first.first_name).to eq("Johnny")
@@ -192,21 +225,20 @@ describe ActiveRestClient::Request do
192
225
  end
193
226
 
194
227
  it "should instantiate other classes using has_many when required to do so" do
195
- ActiveRestClient::Connection.any_instance.should_receive(:get).with("/", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"first_name\":\"Johnny\", \"expenses\":[{\"amount\":1}, {\"amount\":2}]}", status:200, headers:{}))
228
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"first_name\":\"Johnny\", \"expenses\":[{\"amount\":1}, {\"amount\":2}]}", status:200, headers:{}))
196
229
  object = ExampleClient.all
197
230
  expect(object.expenses.first).to be_instance_of(ExampleOtherClient)
198
231
  end
199
232
 
200
233
  it "should instantiate other classes using has_many even if nested off the root" do
201
- ActiveRestClient::Connection.any_instance.should_receive(:get).with("/babies", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"first_name\":\"Johnny\", \"children\":{\"eldest\":[{\"name\":\"Billy\"}]}}", status:200, headers:{}))
234
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/babies", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"first_name\":\"Johnny\", \"children\":{\"eldest\":[{\"name\":\"Billy\"}]}}", status:200, headers:{}))
202
235
  object = ExampleClient.babies
203
236
  expect(object.children.eldest.first).to be_instance_of(ExampleOtherClient)
204
237
  end
205
238
 
206
239
  it "should assign new attributes to the existing object if possible" do
207
- ActiveRestClient::Connection.
208
- any_instance.
209
- should_receive(:post).
240
+ expect_any_instance_of(ActiveRestClient::Connection).
241
+ to receive(:post).
210
242
  with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
211
243
  and_return(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}", headers:{}))
212
244
  object = ExampleClient.new(first_name:"John", should_disappear:true)
@@ -216,14 +248,27 @@ describe ActiveRestClient::Request do
216
248
  expect(object.id).to eq(1234)
217
249
  end
218
250
 
251
+ it "should expose etag if available" do
252
+ response = OpenStruct.new(body: "{}", headers: {"ETag" => "123456"}, status: 200)
253
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/123", an_instance_of(Hash)).and_return(response)
254
+ object = ExampleClient.find(123)
255
+ expect(object._etag).to eq("123456")
256
+ end
257
+
258
+ it "should expose all headers" do
259
+ response = OpenStruct.new(body: "{}", headers: {"X-Test-Header" => "true"}, status: 200)
260
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/123", an_instance_of(Hash)).and_return(response)
261
+ object = ExampleClient.find(123)
262
+ expect(object._headers["X-Test-Header"]).to eq("true")
263
+ end
264
+
219
265
  it "should clearly pass through 200 status responses" do
220
- ActiveRestClient::Connection.
221
- any_instance.
222
- should_receive(:post).
266
+ expect_any_instance_of(ActiveRestClient::Connection).
267
+ to receive(:post).
223
268
  with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
224
269
  and_return(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}", headers:{}, status:200))
225
- ActiveRestClient::Logger.should_receive(:info).with {|*args| args.first[%r{Requesting http://www.example.com/create}]}
226
- ActiveRestClient::Logger.should_receive(:debug).at_least(1).times.with {|*args| args.first[/Response received \d+ bytes/] || args.first["Trying to read from cache"]}
270
+ expect(ActiveRestClient::Logger).to receive(:info).with(%r'Requesting http://www.example.com/create')
271
+ expect(ActiveRestClient::Logger).to receive(:debug).at_least(1).times.with(%r'(Response received \d+ bytes|Trying to read from cache)')
227
272
 
228
273
  object = ExampleClient.new(first_name:"John", should_disappear:true)
229
274
  object.create
@@ -231,26 +276,24 @@ describe ActiveRestClient::Request do
231
276
  end
232
277
 
233
278
  it "should debug log 200 responses" do
234
- ActiveRestClient::Connection.
235
- any_instance.
236
- should_receive(:post).
279
+ expect_any_instance_of(ActiveRestClient::Connection).
280
+ to receive(:post).
237
281
  with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
238
282
  and_return(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}", headers:{}, status:200))
239
- ActiveRestClient::Logger.should_receive(:info).with {|*args| args.first[%r{Requesting http://www.example.com/create}]}
240
- ActiveRestClient::Logger.should_receive(:debug).at_least(1).times.with {|*args| args.first[/Response received \d+ bytes/] || args.first["Trying to read from cache"]}
283
+ expect(ActiveRestClient::Logger).to receive(:info).with(%r'Requesting http://www.example.com/create')
284
+ expect(ActiveRestClient::Logger).to receive(:debug).at_least(1).times.with(%r'(Response received \d+ bytes|Trying to read from cache)')
241
285
 
242
286
  object = ExampleClient.new(first_name:"John", should_disappear:true)
243
287
  object.create
244
288
  end
245
289
 
246
290
  it "should verbose debug the with the right http verb" do
247
- ActiveRestClient::Connection.
248
- any_instance.
249
- should_receive(:post).
291
+ expect_any_instance_of(ActiveRestClient::Connection).
292
+ to receive(:post).
250
293
  with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
251
294
  and_return(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}", headers:{}, status:200))
252
- ActiveRestClient::Logger.should_receive(:debug).with(/ POST /)
253
- ActiveRestClient::Logger.stub(:debug).with(any_args)
295
+ expect(ActiveRestClient::Logger).to receive(:debug).with(/ POST /)
296
+ allow(ActiveRestClient::Logger).to receive(:debug).with(any_args)
254
297
 
255
298
  object = VerboseExampleClient.new(first_name:"John", should_disappear:true)
256
299
  object.create
@@ -258,19 +301,18 @@ describe ActiveRestClient::Request do
258
301
 
259
302
  it "should verbose log if enabled" do
260
303
  connection = double(ActiveRestClient::Connection).as_null_object
261
- ActiveRestClient::ConnectionManager.should_receive(:get_connection).and_return(connection)
262
- connection.should_receive(:get).with("/all", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}', headers:{"Content-Type" => "application/json", "Connection" => "close"}))
263
- ActiveRestClient::Logger.should_receive(:debug).with("ActiveRestClient Verbose Log:")
264
- ActiveRestClient::Logger.should_receive(:debug).with(/ >> /).at_least(:twice)
265
- ActiveRestClient::Logger.should_receive(:debug).with(/ << /).at_least(:twice)
266
- ActiveRestClient::Logger.stub(:debug).with(any_args)
304
+ expect(ActiveRestClient::ConnectionManager).to receive(:get_connection).and_return(connection)
305
+ expect(connection).to receive(:get).with("/all", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}', headers:{"Content-Type" => "application/json", "Connection" => "close"}))
306
+ expect(ActiveRestClient::Logger).to receive(:debug).with("ActiveRestClient Verbose Log:")
307
+ expect(ActiveRestClient::Logger).to receive(:debug).with(/ >> /).at_least(:twice)
308
+ expect(ActiveRestClient::Logger).to receive(:debug).with(/ << /).at_least(:twice)
309
+ allow(ActiveRestClient::Logger).to receive(:debug).with(any_args)
267
310
  VerboseExampleClient.all
268
311
  end
269
312
 
270
313
  it "should raise an unauthorised exception for 401 errors" do
271
- ActiveRestClient::Connection.
272
- any_instance.
273
- should_receive(:post).
314
+ expect_any_instance_of(ActiveRestClient::Connection).
315
+ to receive(:post).
274
316
  with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
275
317
  and_return(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}", headers:{}, status:401))
276
318
  object = ExampleClient.new(first_name:"John", should_disappear:true)
@@ -285,9 +327,8 @@ describe ActiveRestClient::Request do
285
327
  end
286
328
 
287
329
  it "should raise a forbidden client exception for 403 errors" do
288
- ActiveRestClient::Connection.
289
- any_instance.
290
- should_receive(:post).
330
+ expect_any_instance_of(ActiveRestClient::Connection).
331
+ to receive(:post).
291
332
  with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
292
333
  and_return(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}", headers:{}, status:403))
293
334
  object = ExampleClient.new(first_name:"John", should_disappear:true)
@@ -302,9 +343,8 @@ describe ActiveRestClient::Request do
302
343
  end
303
344
 
304
345
  it "should raise a not found client exception for 404 errors" do
305
- ActiveRestClient::Connection.
306
- any_instance.
307
- should_receive(:post).
346
+ expect_any_instance_of(ActiveRestClient::Connection).
347
+ to receive(:post).
308
348
  with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
309
349
  and_return(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}", headers:{}, status:404))
310
350
  object = ExampleClient.new(first_name:"John", should_disappear:true)
@@ -319,9 +359,8 @@ describe ActiveRestClient::Request do
319
359
  end
320
360
 
321
361
  it "should raise a client exceptions for 4xx errors" do
322
- ActiveRestClient::Connection.
323
- any_instance.
324
- should_receive(:post).
362
+ expect_any_instance_of(ActiveRestClient::Connection).
363
+ to receive(:post).
325
364
  with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
326
365
  and_return(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}", headers:{}, status:409))
327
366
  object = ExampleClient.new(first_name:"John", should_disappear:true)
@@ -336,9 +375,8 @@ describe ActiveRestClient::Request do
336
375
  end
337
376
 
338
377
  it "should raise a server exception for 5xx errors" do
339
- ActiveRestClient::Connection.
340
- any_instance.
341
- should_receive(:post).
378
+ expect_any_instance_of(ActiveRestClient::Connection).
379
+ to receive(:post).
342
380
  with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
343
381
  and_return(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}", headers:{}, status:500))
344
382
  object = ExampleClient.new(first_name:"John", should_disappear:true)
@@ -354,9 +392,8 @@ describe ActiveRestClient::Request do
354
392
 
355
393
  it "should raise a parse exception for invalid JSON returns" do
356
394
  error_content = "<h1>500 Server Error</h1>"
357
- ActiveRestClient::Connection.
358
- any_instance.
359
- should_receive(:post).
395
+ expect_any_instance_of(ActiveRestClient::Connection).
396
+ to receive(:post).
360
397
  with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
361
398
  and_return(OpenStruct.new(body:error_content, headers:{'Content-Type' => 'text/html'}, status:500))
362
399
  object = ExampleClient.new(first_name:"John", should_disappear:true)
@@ -372,9 +409,8 @@ describe ActiveRestClient::Request do
372
409
 
373
410
  it "should raise a bad request exception for 400 response status" do
374
411
  error_content = "<h1>400 Bad Request</h1>"
375
- ActiveRestClient::Connection.
376
- any_instance.
377
- should_receive(:post).
412
+ expect_any_instance_of(ActiveRestClient::Connection).
413
+ to receive(:post).
378
414
  with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
379
415
  and_return(OpenStruct.new(body:error_content, headers:{'Content-Type' => 'text/html'}, status:400))
380
416
  object = ExampleClient.new(first_name:"John", should_disappear:true)
@@ -390,9 +426,8 @@ describe ActiveRestClient::Request do
390
426
 
391
427
  it "should raise response parse exception for 200 response status and non json content type" do
392
428
  error_content = "<h1>malformed json</h1>"
393
- ActiveRestClient::Connection.
394
- any_instance.
395
- should_receive(:post).
429
+ expect_any_instance_of(ActiveRestClient::Connection).
430
+ to receive(:post).
396
431
  with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
397
432
  and_return(OpenStruct.new(body:error_content, headers:{'Content-Type' => 'text/html'}, status:200))
398
433
  object = ExampleClient.new(first_name:"John", should_disappear:true)
@@ -407,9 +442,8 @@ describe ActiveRestClient::Request do
407
442
  end
408
443
 
409
444
  it "should not override the attributes of the existing object on error response status" do
410
- ActiveRestClient::Connection.
411
- any_instance.
412
- should_receive(:post).
445
+ expect_any_instance_of(ActiveRestClient::Connection).
446
+ to receive(:post).
413
447
  with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
414
448
  and_return(OpenStruct.new(body:'{"errors": ["validation": "error in validation"]}', headers:{'Content-Type' => 'text/html'}, status:400))
415
449
  object = ExampleClient.new(first_name:"John", should_disappear:true)
@@ -435,6 +469,8 @@ describe ActiveRestClient::Request do
435
469
  "http://www.example.com/"
436
470
  end
437
471
 
472
+ def username ; end
473
+ def password ; end
438
474
  def name ; end
439
475
  def _filter_request(*args) ; end
440
476
  def verbose ; false ; end
@@ -446,20 +482,20 @@ describe ActiveRestClient::Request do
446
482
  end
447
483
 
448
484
  it "should send all class mapped methods through _filter_request" do
449
- ActiveRestClient::Connection.any_instance.should_receive(:get).with("/", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"first_name\":\"Johnny\", \"expenses\":[{\"amount\":1}, {\"amount\":2}]}", status:200, headers:{}))
450
- ExampleClient.should_receive(:_filter_request).with(any_args).exactly(2).times
485
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"first_name\":\"Johnny\", \"expenses\":[{\"amount\":1}, {\"amount\":2}]}", status:200, headers:{}))
486
+ expect(ExampleClient).to receive(:_filter_request).with(any_args).exactly(2).times
451
487
  ExampleClient.all
452
488
  end
453
489
 
454
490
  it "should send all instance mapped methods through _filter_request" do
455
- ActiveRestClient::Connection.any_instance.should_receive(:get).with("/", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"first_name\":\"Johnny\", \"expenses\":[{\"amount\":1}, {\"amount\":2}]}", status:200, headers:{}))
456
- ExampleClient.should_receive(:_filter_request).with(any_args).exactly(2).times
491
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"first_name\":\"Johnny\", \"expenses\":[{\"amount\":1}, {\"amount\":2}]}", status:200, headers:{}))
492
+ expect(ExampleClient).to receive(:_filter_request).with(any_args).exactly(2).times
457
493
  e = ExampleClient.new
458
494
  e.all
459
495
  end
460
496
 
461
497
  it "should change the generated object if an after_filter changes it" do
462
- ActiveRestClient::Connection.any_instance.should_receive(:get).with("/change", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"first_name\":\"Johnny\", \"expenses\":[{\"amount\":1}, {\"amount\":2}]}", status:200, headers:{}))
498
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/change", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"first_name\":\"Johnny\", \"expenses\":[{\"amount\":1}, {\"amount\":2}]}", status:200, headers:{}))
463
499
  obj = ExampleClient.change
464
500
  expect(obj.test).to eq(1)
465
501
  end
@@ -479,9 +515,8 @@ describe ActiveRestClient::Request do
479
515
 
480
516
  it "should allow requests directly to URLs" do
481
517
  ActiveRestClient::ConnectionManager.reset!
482
- ActiveRestClient::Connection.
483
- any_instance.
484
- should_receive(:get).
518
+ expect_any_instance_of(ActiveRestClient::Connection).
519
+ to receive(:get).
485
520
  with("/some/url", an_instance_of(Hash)).
486
521
  and_return(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}", headers:{}, status:200))
487
522
  SameServerExampleClient.same_server
@@ -490,14 +525,14 @@ describe ActiveRestClient::Request do
490
525
  it "should allow requests directly to URLs even if to different URLs" do
491
526
  ActiveRestClient::ConnectionManager.reset!
492
527
  connection = double("Connection")
493
- connection.
494
- should_receive(:get).
528
+ expect(connection).
529
+ to receive(:get).
495
530
  with("/some/url", an_instance_of(Hash)).
496
531
  and_return(OpenStruct.new(body:"{}", headers:{}, status:304))
497
- connection.
498
- stub(:base_url).
532
+ allow(connection).
533
+ to receive(:base_url).
499
534
  and_return("http://other.example.com")
500
- ActiveRestClient::ConnectionManager.should_receive(:find_connection_for_url).with(OtherServerExampleClient::URL).and_return(connection)
535
+ expect(ActiveRestClient::ConnectionManager).to receive(:find_connection_for_url).with(OtherServerExampleClient::URL).and_return(connection)
501
536
  OtherServerExampleClient.other_server
502
537
  end
503
538
 
@@ -505,9 +540,9 @@ describe ActiveRestClient::Request do
505
540
  ActiveRestClient::ConnectionManager.reset!
506
541
  connection = double("Connection")
507
542
  allow(connection).to receive(:base_url).and_return("http://www.example.com")
508
- ActiveRestClient::ConnectionManager.should_receive(:get_connection).with("http://www.example.com").and_return(connection)
509
- connection.
510
- should_receive(:get).
543
+ expect(ActiveRestClient::ConnectionManager).to receive(:get_connection).with("http://www.example.com").and_return(connection)
544
+ expect(connection).
545
+ to receive(:get).
511
546
  with("/v1/people", an_instance_of(Hash)).
512
547
  and_return(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}", headers:{}, status:200))
513
548
  @obj = SameServerExampleClient._request('/people')
@@ -519,7 +554,7 @@ describe ActiveRestClient::Request do
519
554
  let(:hal) { ExampleClient.hal }
520
555
 
521
556
  it "should request a HAL response or plain JSON" do
522
- ActiveRestClient::Connection.any_instance.should_receive(:get).with("/headers", hash_including("Accept" => "application/hal+json, application/json;q=0.5")).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
557
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/headers", hash_including("Accept" => "application/hal+json, application/json;q=0.5")).and_return(OpenStruct.new(body:'{"result":true}', headers:{}))
523
558
  ExampleClient.headers
524
559
  end
525
560
 
@@ -536,17 +571,17 @@ describe ActiveRestClient::Request do
536
571
  fake_object = RequestFakeObject.new
537
572
  request = ActiveRestClient::Request.new(method, fake_object, {})
538
573
  request.instance_variable_set(:@response, OpenStruct.new(headers:{"Content-Type" => "application/hal+json"}))
539
- expect(request.hal_response?).to be_true
574
+ expect(request.hal_response?).to be_truthy
540
575
  request.instance_variable_set(:@response, OpenStruct.new(headers:{"Content-Type" => "application/json"}))
541
- expect(request.hal_response?).to be_true
576
+ expect(request.hal_response?).to be_truthy
542
577
  request.instance_variable_set(:@response, OpenStruct.new(headers:{"Content-Type" => "text/plain"}))
543
- expect(request.hal_response?).to be_false
578
+ expect(request.hal_response?).to be_falsey
544
579
  request.instance_variable_set(:@response, OpenStruct.new(headers:{"Content-Type" => ["text/plain", "application/hal+json"]}))
545
- expect(request.hal_response?).to be_true
580
+ expect(request.hal_response?).to be_truthy
546
581
  request.instance_variable_set(:@response, OpenStruct.new(headers:{"Content-Type" => ["text/plain", "application/json"]}))
547
- expect(request.hal_response?).to be_true
582
+ expect(request.hal_response?).to be_truthy
548
583
  request.instance_variable_set(:@response, OpenStruct.new(headers:{"Content-Type" => ["text/plain"]}))
549
- expect(request.hal_response?).to be_false
584
+ expect(request.hal_response?).to be_falsey
550
585
  end
551
586
 
552
587
  it "should map _links in to the normal attributes" do
@@ -579,7 +614,7 @@ describe ActiveRestClient::Request do
579
614
  end
580
615
 
581
616
  it "replaces the body completely in a filter" do
582
- ActiveRestClient::Connection.any_instance.should_receive(:post).with("/save", "{\"id\":1234,\"name\":\"john\"}", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{}", headers:{}))
617
+ expect_any_instance_of(ActiveRestClient::Connection).to receive(:post).with("/save", "{\"id\":1234,\"name\":\"john\"}", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{}", headers:{}))
583
618
  FilteredBodyExampleClient.save id:1234, name:'john'
584
619
  end
585
620
  end