active_rest_client 1.0.9 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +22 -0
- data/active_rest_client.gemspec +1 -0
- data/lib/active_rest_client/base.rb +5 -1
- data/lib/active_rest_client/caching.rb +6 -5
- data/lib/active_rest_client/configuration.rb +6 -0
- data/lib/active_rest_client/connection_manager.rb +15 -0
- data/lib/active_rest_client/proxy_base.rb +36 -2
- data/lib/active_rest_client/request.rb +54 -45
- data/lib/active_rest_client/request_delegator.rb +44 -0
- data/lib/active_rest_client/result_iterator.rb +4 -3
- data/lib/active_rest_client/validation.rb +1 -1
- data/lib/active_rest_client/version.rb +1 -1
- data/lib/active_rest_client.rb +1 -0
- data/spec/lib/base_spec.rb +34 -18
- data/spec/lib/caching_spec.rb +5 -5
- data/spec/lib/configuration_spec.rb +24 -0
- data/spec/lib/connection_manager_spec.rb +7 -0
- data/spec/lib/instrumentation_spec.rb +1 -1
- data/spec/lib/proxy_spec.rb +7 -7
- data/spec/lib/request_spec.rb +117 -60
- data/spec/lib/result_iterator_spec.rb +8 -1
- data/spec/lib/validation_spec.rb +14 -14
- data/spec/spec_helper.rb +31 -0
- metadata +17 -2
@@ -69,6 +69,18 @@ describe ActiveRestClient::Configuration do
|
|
69
69
|
ActiveRestClient::Base.username = nil
|
70
70
|
end
|
71
71
|
|
72
|
+
it "should escape the username" do
|
73
|
+
ActiveRestClient::Base.username = "bill@example.com"
|
74
|
+
expect(ActiveRestClient::Base.username).to eq("bill%40example.com")
|
75
|
+
ActiveRestClient::Base.username = nil
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should not doubly escape the username" do
|
79
|
+
ActiveRestClient::Base.username = "bill%40example.com"
|
80
|
+
expect(ActiveRestClient::Base.username).to_not eq("bill%2540example.com")
|
81
|
+
ActiveRestClient::Base.username = nil
|
82
|
+
end
|
83
|
+
|
72
84
|
it "should remember the set password" do
|
73
85
|
expect(ConfigurationExample.password).to eq("smith")
|
74
86
|
end
|
@@ -79,6 +91,18 @@ describe ActiveRestClient::Configuration do
|
|
79
91
|
ActiveRestClient::Base.password = nil
|
80
92
|
end
|
81
93
|
|
94
|
+
it "should escape the password" do
|
95
|
+
ActiveRestClient::Base.password = "something@else"
|
96
|
+
expect(ActiveRestClient::Base.password).to eq("something%40else")
|
97
|
+
ActiveRestClient::Base.password = nil
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should not doubly escape the password" do
|
101
|
+
ActiveRestClient::Base.password = "something%40else"
|
102
|
+
expect(ActiveRestClient::Base.password).to_not eq("something%2540else")
|
103
|
+
ActiveRestClient::Base.password = nil
|
104
|
+
end
|
105
|
+
|
82
106
|
it "should default to a form_encoded request_body_type" do
|
83
107
|
expect(ActiveRestClient::Base.request_body_type).to eq(:form_encoded)
|
84
108
|
end
|
@@ -33,4 +33,11 @@ describe ActiveRestClient::ConnectionManager do
|
|
33
33
|
found_connection = ActiveRestClient::ConnectionManager.find_connection_for_url("#{base_url}:8080/people/test")
|
34
34
|
expect(found_connection).to eq(connection)
|
35
35
|
end
|
36
|
+
|
37
|
+
it "should call 'in_parllel' for a session and yield procedure inside that block" do
|
38
|
+
ActiveRestClient::Base.adapter = :typhoeus
|
39
|
+
session = ActiveRestClient::ConnectionManager.get_connection("http://www.example.com").session
|
40
|
+
expect { |b| ActiveRestClient::ConnectionManager.in_parallel("http://www.example.com", &b)}.to yield_control
|
41
|
+
ActiveRestClient::Base._reset_configuration!
|
42
|
+
end
|
36
43
|
end
|
@@ -28,7 +28,7 @@ describe ActiveRestClient::Instrumentation do
|
|
28
28
|
expect_any_instance_of(ActiveRestClient::Connection).
|
29
29
|
to receive(:get).
|
30
30
|
with("/real", an_instance_of(Hash)).
|
31
|
-
and_return(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}",
|
31
|
+
and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}", response_headers:{}, status:200)))
|
32
32
|
expect(ActiveRestClient::Logger).to receive(:debug).with(/ActiveRestClient.*ms\)/)
|
33
33
|
expect(ActiveRestClient::Logger).to receive(:debug).at_least(:once).with(any_args)
|
34
34
|
InstrumentationExampleClient.real
|
data/spec/lib/proxy_spec.rb
CHANGED
@@ -99,12 +99,12 @@ describe ActiveRestClient::Base do
|
|
99
99
|
end
|
100
100
|
|
101
101
|
it "has access to raw body content for requests" do
|
102
|
-
expect_any_instance_of(ActiveRestClient::Connection).to receive(:put).with("/update", "MY-BODY-CONTENT", instance_of(Hash)).and_return(OpenStruct.new(body:"{\"result\":true}", status:200,
|
102
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:put).with("/update", "MY-BODY-CONTENT", instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"result\":true}", status:200, response_headers:{})))
|
103
103
|
ProxyClientExample.update(fname:"John", lname:"Smith")
|
104
104
|
end
|
105
105
|
|
106
106
|
it "handles DELETE requests" do
|
107
|
-
expect_any_instance_of(ActiveRestClient::Connection).to receive(:delete).with("/remove", instance_of(Hash)).and_return(OpenStruct.new(body:"{\"result\":true}", status:200,
|
107
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:delete).with("/remove", instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"result\":true}", status:200, response_headers:{})))
|
108
108
|
ProxyClientExample.remove
|
109
109
|
end
|
110
110
|
|
@@ -115,7 +115,7 @@ describe ActiveRestClient::Base do
|
|
115
115
|
end
|
116
116
|
|
117
117
|
it "can intercept the response and parse the response, alter it and pass it on during the request" do
|
118
|
-
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/change-format", instance_of(Hash)).and_return(OpenStruct.new(body:"{\"fname\":\"Billy\"}", status:200,
|
118
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/change-format", instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"fname\":\"Billy\"}", status:200, response_headers:{})))
|
119
119
|
ret = ProxyClientExample.change_format
|
120
120
|
expect(ret.first_name).to eq("Billy")
|
121
121
|
end
|
@@ -128,7 +128,7 @@ describe ActiveRestClient::Base do
|
|
128
128
|
end
|
129
129
|
|
130
130
|
it "can continue with the request in the normal way, passing it on to the server" do
|
131
|
-
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/not_proxied?id=1", instance_of(Hash)).and_return(OpenStruct.new(body:"{\"result\":true}", status:200,
|
131
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/not_proxied?id=1", instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"result\":true}", status:200, response_headers:{})))
|
132
132
|
ProxyClientExample.not_proxied(id:1)
|
133
133
|
end
|
134
134
|
|
@@ -144,7 +144,7 @@ describe ActiveRestClient::Base do
|
|
144
144
|
ProxyClientExample.perform_caching true
|
145
145
|
allow(ProxyClientExample).to receive(:cache_store).and_return(cache_store)
|
146
146
|
expiry = 10.minutes.from_now.rfc2822
|
147
|
-
expect_any_instance_of(ActiveRestClient::Connection).to receive(:put).with("/update", "MY-BODY-CONTENT", instance_of(Hash)).and_return(OpenStruct.new(body:"{\"result\":true}", status:200,
|
147
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:put).with("/update", "MY-BODY-CONTENT", instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"result\":true}", status:200, response_headers:{"Expires" => expiry, "ETag" => "123456"})))
|
148
148
|
expect(ProxyClientExample.cache_store).to receive(:write) do |key, object, options|
|
149
149
|
expect(key).to eq("ProxyClientExample:/update")
|
150
150
|
expect(object).to be_an_instance_of(String)
|
@@ -162,8 +162,8 @@ describe ActiveRestClient::Base do
|
|
162
162
|
end
|
163
163
|
|
164
164
|
it "can force the URL from a filter without it being passed through URL replacement" do
|
165
|
-
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/hal_test/1", instance_of(Hash)).and_return(OpenStruct.new(body:"{\"result\":true}", status:200,
|
166
|
-
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/this/is/a/test", instance_of(Hash)).and_return(OpenStruct.new(body:"{\"result\":true}", status:200,
|
165
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/hal_test/1", instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"result\":true}", status:200, response_headers:{})))
|
166
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/this/is/a/test", instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"result\":true}", status:200, response_headers:{})))
|
167
167
|
expect(ProxyClientExample.hal_test(id:1).test.result).to eq(true)
|
168
168
|
end
|
169
169
|
|
data/spec/lib/request_spec.rb
CHANGED
@@ -74,24 +74,24 @@ describe ActiveRestClient::Request do
|
|
74
74
|
it "should get an HTTP connection when called" do
|
75
75
|
connection = double(ActiveRestClient::Connection).as_null_object
|
76
76
|
expect(ActiveRestClient::ConnectionManager).to receive(:get_connection).with("http://www.example.com").and_return(connection)
|
77
|
-
expect(connection).to receive(:get).with("/", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}',
|
77
|
+
expect(connection).to receive(:get).with("/", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:'{"result":true}', response_headers:{})))
|
78
78
|
ExampleClient.all
|
79
79
|
end
|
80
80
|
|
81
81
|
it "should get an HTTP connection with authentication when called" do
|
82
82
|
connection = double(ActiveRestClient::Connection).as_null_object
|
83
83
|
expect(ActiveRestClient::ConnectionManager).to receive(:get_connection).with("http://john:smith@www.example.com").and_return(connection)
|
84
|
-
expect(connection).to receive(:get).with("/", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}',
|
84
|
+
expect(connection).to receive(:get).with("/", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:'{"result":true}', response_headers:{})))
|
85
85
|
AuthenticatedExampleClient.all
|
86
86
|
end
|
87
87
|
|
88
88
|
it "should get an HTTP connection when called and call get on it" do
|
89
|
-
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}',
|
89
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:'{"result":true}', response_headers:{})))
|
90
90
|
ExampleClient.all
|
91
91
|
end
|
92
92
|
|
93
93
|
it "should get an HTTP connection when called and call delete on it" do
|
94
|
-
expect_any_instance_of(ActiveRestClient::Connection).to receive(:delete).with("/remove/1", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}',
|
94
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:delete).with("/remove/1", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:'{"result":true}', response_headers:{})))
|
95
95
|
ExampleClient.remove(id:1)
|
96
96
|
end
|
97
97
|
|
@@ -103,79 +103,79 @@ describe ActiveRestClient::Request do
|
|
103
103
|
end
|
104
104
|
|
105
105
|
it "should pass through get parameters" do
|
106
|
-
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/?debug=true", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}',
|
106
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/?debug=true", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:'{"result":true}', response_headers:{})))
|
107
107
|
ExampleClient.all debug:true
|
108
108
|
end
|
109
109
|
|
110
110
|
it "should pass through get parameters, using defaults specified" do
|
111
|
-
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}',
|
111
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/defaults?overwrite=yes&persist=yes", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:'{"result":true}', response_headers:{})))
|
112
112
|
ExampleClient.defaults overwrite:"yes"
|
113
113
|
end
|
114
114
|
|
115
115
|
it "should pass through url parameters" do
|
116
|
-
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/1234", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}',
|
116
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/1234", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:'{"result":true}', response_headers:{})))
|
117
117
|
ExampleClient.find id:1234
|
118
118
|
end
|
119
119
|
|
120
120
|
it "should accept an integer as the only parameter and use it as id" do
|
121
|
-
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/1234", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}',
|
121
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/1234", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:'{"result":true}', response_headers:{})))
|
122
122
|
ExampleClient.find(1234)
|
123
123
|
end
|
124
124
|
|
125
125
|
it "should accept a string as the only parameter and use it as id" do
|
126
|
-
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/1234", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}',
|
126
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/1234", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:'{"result":true}', response_headers:{})))
|
127
127
|
ExampleClient.find("1234")
|
128
128
|
end
|
129
129
|
|
130
130
|
it "should pass through url parameters and get parameters" do
|
131
|
-
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/1234?debug=true", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"result\":true}",
|
131
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/1234?debug=true", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"result\":true}", response_headers:{})))
|
132
132
|
ExampleClient.find id:1234, debug:true
|
133
133
|
end
|
134
134
|
|
135
135
|
it "should pass through url parameters and put parameters" do
|
136
|
-
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}",
|
136
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:put).with("/put/1234", "debug=true", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"result\":true}", response_headers:{})))
|
137
137
|
ExampleClient.update id:1234, debug:true
|
138
138
|
end
|
139
139
|
|
140
140
|
it "should pass through 'array type' get parameters" do
|
141
|
-
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/?include%5B%5D=your&include%5B%5D=friends", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"result\":true}",
|
141
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/?include%5B%5D=your&include%5B%5D=friends", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"result\":true}", response_headers:{})))
|
142
142
|
ExampleClient.all :include => [:your,:friends]
|
143
143
|
end
|
144
144
|
|
145
145
|
it "should encode the body in a form-encoded format by default" do
|
146
|
-
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}",
|
146
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:put).with("/put/1234", "debug=true&test=foo", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"result\":true}", response_headers:{})))
|
147
147
|
ExampleClient.update id:1234, debug:true, test:'foo'
|
148
148
|
end
|
149
149
|
|
150
150
|
it "should encode the body in a JSON format if specified" do
|
151
|
-
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}",
|
151
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:put).with("/put/1234", %q({"debug":true,"test":"foo"}), an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"result\":true}", response_headers:{})))
|
152
152
|
ExampleClient.request_body_type :json
|
153
153
|
ExampleClient.update id:1234, debug:true, test:'foo'
|
154
154
|
end
|
155
155
|
|
156
156
|
it "allows forcing a request_body_type per request" do
|
157
|
-
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}",
|
157
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:post).with("/encoding", %q({"id":1234,"test":"something"}), an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"result\":true}", response_headers:{})))
|
158
158
|
ExampleClient.request_body_type :form_encoded # Should be ignored and the per_method :json used
|
159
159
|
ExampleClient.test_encoding id:1234, test: "something"
|
160
160
|
end
|
161
161
|
|
162
162
|
it "should pass through custom headers" do
|
163
|
-
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/headers", hash_including("X-My-Header" => "myvalue")).and_return(OpenStruct.new(body:'{"result":true}',
|
163
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/headers", hash_including("X-My-Header" => "myvalue")).and_return(::FaradayResponseMock.new(OpenStruct.new(body:'{"result":true}', response_headers:{})))
|
164
164
|
ExampleClient.headers
|
165
165
|
end
|
166
166
|
|
167
167
|
it "should set request header with content-type for default" do
|
168
|
-
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}',
|
168
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:put).with("/headers_default", "", hash_including("Content-Type" => "application/x-www-form-urlencoded")).and_return(::FaradayResponseMock.new(OpenStruct.new(body:'{"result":true}', response_headers:{})))
|
169
169
|
ExampleClient.headers_default
|
170
170
|
end
|
171
171
|
|
172
172
|
it "should set request header with content-type for JSON" do
|
173
|
-
expect_any_instance_of(ActiveRestClient::Connection).to receive(:put).with("/headers_json", "{}", hash_including("Content-Type" => "application/json; charset=utf-8")).and_return(OpenStruct.new(body:'{"result":true}',
|
173
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:put).with("/headers_json", "{}", hash_including("Content-Type" => "application/json; charset=utf-8")).and_return(::FaradayResponseMock.new(OpenStruct.new(body:'{"result":true}', response_headers:{})))
|
174
174
|
ExampleClient.headers_json
|
175
175
|
end
|
176
176
|
|
177
177
|
it "should parse JSON to give a nice object" do
|
178
|
-
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}}}",
|
178
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:put).with("/put/1234", "debug=true", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"result\":true, \"list\":[1,2,3,{\"test\":true}], \"created_at\":\"2012-03-04T01:02:03Z\", \"child\":{\"grandchild\":{\"test\":true}}}", response_headers:{})))
|
179
179
|
object = ExampleClient.update id:1234, debug:true
|
180
180
|
expect(object.result).to eq(true)
|
181
181
|
expect(object.list.first).to eq(1)
|
@@ -223,7 +223,7 @@ describe ActiveRestClient::Request do
|
|
223
223
|
end
|
224
224
|
|
225
225
|
it "should parse an array within JSON to be a result iterator" do
|
226
|
-
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,
|
226
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:put).with("/put/1234", "debug=true", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"[{\"first_name\":\"Johnny\"}, {\"first_name\":\"Billy\"}]", status:200, response_headers:{})))
|
227
227
|
object = ExampleClient.update id:1234, debug:true
|
228
228
|
expect(object).to be_instance_of(ActiveRestClient::ResultIterator)
|
229
229
|
expect(object.first.first_name).to eq("Johnny")
|
@@ -232,25 +232,25 @@ describe ActiveRestClient::Request do
|
|
232
232
|
end
|
233
233
|
|
234
234
|
it "should instantiate other classes using has_many when required to do so" do
|
235
|
-
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,
|
235
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"first_name\":\"Johnny\", \"expenses\":[{\"amount\":1}, {\"amount\":2}]}", status:200, response_headers:{})))
|
236
236
|
object = ExampleClient.all
|
237
237
|
expect(object.expenses.first).to be_instance_of(ExampleOtherClient)
|
238
238
|
end
|
239
239
|
|
240
240
|
it "should instantiate other classes using has_many even if nested off the root" do
|
241
|
-
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,
|
241
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/babies", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"first_name\":\"Johnny\", \"children\":{\"eldest\":[{\"name\":\"Billy\"}]}}", status:200, response_headers:{})))
|
242
242
|
object = ExampleClient.babies
|
243
243
|
expect(object.children.eldest.first).to be_instance_of(ExampleOtherClient)
|
244
244
|
end
|
245
245
|
|
246
246
|
it "should instantiate other classes using has_one when required to do so" do
|
247
|
-
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/single", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"first_name\":\"Johnny\", \"single\":{\"name\":\"Billy\"}}", status:200,
|
247
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/single", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"first_name\":\"Johnny\", \"single\":{\"name\":\"Billy\"}}", status:200, response_headers:{})))
|
248
248
|
object = ExampleClient.single_association
|
249
249
|
expect(object.single).to be_instance_of(ExampleSingleClient)
|
250
250
|
end
|
251
251
|
|
252
252
|
it "should instantiate other classes using has_one even if nested off the root" do
|
253
|
-
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/single", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{\"first_name\":\"Johnny\", \"children\":[{\"single\":{\"name\":\"Billy\"}}, {\"single\":{\"name\":\"Sharon\"}}]}", status:200,
|
253
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/single", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"first_name\":\"Johnny\", \"children\":[{\"single\":{\"name\":\"Billy\"}}, {\"single\":{\"name\":\"Sharon\"}}]}", status:200, response_headers:{})))
|
254
254
|
object = ExampleClient.single_association
|
255
255
|
expect(object.children.first.single).to be_instance_of(ExampleSingleClient)
|
256
256
|
end
|
@@ -259,7 +259,7 @@ describe ActiveRestClient::Request do
|
|
259
259
|
expect_any_instance_of(ActiveRestClient::Connection).
|
260
260
|
to receive(:post).
|
261
261
|
with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
|
262
|
-
and_return(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}",
|
262
|
+
and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}", response_headers:{})))
|
263
263
|
object = ExampleClient.new(first_name:"John", should_disappear:true)
|
264
264
|
object.create
|
265
265
|
expect(object.first_name).to eq("John")
|
@@ -268,14 +268,21 @@ describe ActiveRestClient::Request do
|
|
268
268
|
end
|
269
269
|
|
270
270
|
it "should expose etag if available" do
|
271
|
-
response = OpenStruct.new(body: "{}",
|
271
|
+
response = ::FaradayResponseMock.new(OpenStruct.new(body: "{}", response_headers: {"ETag" => "123456"}, status: 200))
|
272
272
|
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/123", an_instance_of(Hash)).and_return(response)
|
273
273
|
object = ExampleClient.find(123)
|
274
274
|
expect(object._etag).to eq("123456")
|
275
275
|
end
|
276
276
|
|
277
277
|
it "should expose all headers" do
|
278
|
-
response = OpenStruct.new(body: "{}",
|
278
|
+
response = ::FaradayResponseMock.new(OpenStruct.new(body: "{}", response_headers: {"X-Test-Header" => "true"}, status: 200))
|
279
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/123", an_instance_of(Hash)).and_return(response)
|
280
|
+
object = ExampleClient.find(123)
|
281
|
+
expect(object._headers["X-Test-Header"]).to eq("true")
|
282
|
+
end
|
283
|
+
|
284
|
+
it "should expose all headers on collection" do
|
285
|
+
response = ::FaradayResponseMock.new(OpenStruct.new(body: "[{}]", response_headers: {"X-Test-Header" => "true"}, status: 200))
|
279
286
|
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/123", an_instance_of(Hash)).and_return(response)
|
280
287
|
object = ExampleClient.find(123)
|
281
288
|
expect(object._headers["X-Test-Header"]).to eq("true")
|
@@ -285,7 +292,7 @@ describe ActiveRestClient::Request do
|
|
285
292
|
expect_any_instance_of(ActiveRestClient::Connection).
|
286
293
|
to receive(:post).
|
287
294
|
with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
|
288
|
-
and_return(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}",
|
295
|
+
and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}", response_headers:{}, status:200)))
|
289
296
|
expect(ActiveRestClient::Logger).to receive(:info).with(%r'Requesting http://www.example.com/create')
|
290
297
|
expect(ActiveRestClient::Logger).to receive(:debug).at_least(1).times.with(%r'(Response received \d+ bytes|Trying to read from cache)')
|
291
298
|
|
@@ -298,7 +305,7 @@ describe ActiveRestClient::Request do
|
|
298
305
|
expect_any_instance_of(ActiveRestClient::Connection).
|
299
306
|
to receive(:post).
|
300
307
|
with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
|
301
|
-
and_return(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}",
|
308
|
+
and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}", response_headers:{}, status:200)))
|
302
309
|
expect(ActiveRestClient::Logger).to receive(:info).with(%r'Requesting http://www.example.com/create')
|
303
310
|
expect(ActiveRestClient::Logger).to receive(:debug).at_least(1).times.with(%r'(Response received \d+ bytes|Trying to read from cache)')
|
304
311
|
|
@@ -310,7 +317,7 @@ describe ActiveRestClient::Request do
|
|
310
317
|
expect_any_instance_of(ActiveRestClient::Connection).
|
311
318
|
to receive(:post).
|
312
319
|
with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
|
313
|
-
and_return(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}",
|
320
|
+
and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}", response_headers:{}, status:200)))
|
314
321
|
expect(ActiveRestClient::Logger).to receive(:debug).with(/ POST /)
|
315
322
|
allow(ActiveRestClient::Logger).to receive(:debug).with(any_args)
|
316
323
|
|
@@ -321,7 +328,7 @@ describe ActiveRestClient::Request do
|
|
321
328
|
it "should verbose log if enabled" do
|
322
329
|
connection = double(ActiveRestClient::Connection).as_null_object
|
323
330
|
expect(ActiveRestClient::ConnectionManager).to receive(:get_connection).and_return(connection)
|
324
|
-
expect(connection).to receive(:get).with("/all", an_instance_of(Hash)).and_return(OpenStruct.new(body:'{"result":true}',
|
331
|
+
expect(connection).to receive(:get).with("/all", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:'{"result":true}', response_headers:{"Content-Type" => "application/json", "Connection" => "close"})))
|
325
332
|
expect(ActiveRestClient::Logger).to receive(:debug).with("ActiveRestClient Verbose Log:")
|
326
333
|
expect(ActiveRestClient::Logger).to receive(:debug).with(/ >> /).at_least(:twice)
|
327
334
|
expect(ActiveRestClient::Logger).to receive(:debug).with(/ << /).at_least(:twice)
|
@@ -333,7 +340,7 @@ describe ActiveRestClient::Request do
|
|
333
340
|
expect_any_instance_of(ActiveRestClient::Connection).
|
334
341
|
to receive(:post).
|
335
342
|
with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
|
336
|
-
and_return(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}",
|
343
|
+
and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}", response_headers:{}, status:401)))
|
337
344
|
object = ExampleClient.new(first_name:"John", should_disappear:true)
|
338
345
|
begin
|
339
346
|
object.create
|
@@ -349,7 +356,7 @@ describe ActiveRestClient::Request do
|
|
349
356
|
expect_any_instance_of(ActiveRestClient::Connection).
|
350
357
|
to receive(:post).
|
351
358
|
with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
|
352
|
-
and_return(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}",
|
359
|
+
and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}", response_headers:{}, status:403)))
|
353
360
|
object = ExampleClient.new(first_name:"John", should_disappear:true)
|
354
361
|
begin
|
355
362
|
object.create
|
@@ -365,7 +372,7 @@ describe ActiveRestClient::Request do
|
|
365
372
|
expect_any_instance_of(ActiveRestClient::Connection).
|
366
373
|
to receive(:post).
|
367
374
|
with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
|
368
|
-
and_return(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}",
|
375
|
+
and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}", response_headers:{}, status:404)))
|
369
376
|
object = ExampleClient.new(first_name:"John", should_disappear:true)
|
370
377
|
begin
|
371
378
|
object.create
|
@@ -381,7 +388,7 @@ describe ActiveRestClient::Request do
|
|
381
388
|
expect_any_instance_of(ActiveRestClient::Connection).
|
382
389
|
to receive(:post).
|
383
390
|
with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
|
384
|
-
and_return(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}",
|
391
|
+
and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}", response_headers:{}, status:409)))
|
385
392
|
object = ExampleClient.new(first_name:"John", should_disappear:true)
|
386
393
|
begin
|
387
394
|
object.create
|
@@ -397,7 +404,7 @@ describe ActiveRestClient::Request do
|
|
397
404
|
expect_any_instance_of(ActiveRestClient::Connection).
|
398
405
|
to receive(:post).
|
399
406
|
with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
|
400
|
-
and_return(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}",
|
407
|
+
and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}", response_headers:{}, status:500)))
|
401
408
|
object = ExampleClient.new(first_name:"John", should_disappear:true)
|
402
409
|
begin
|
403
410
|
object.create
|
@@ -414,7 +421,7 @@ describe ActiveRestClient::Request do
|
|
414
421
|
expect_any_instance_of(ActiveRestClient::Connection).
|
415
422
|
to receive(:post).
|
416
423
|
with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
|
417
|
-
and_return(OpenStruct.new(body:error_content,
|
424
|
+
and_return(::FaradayResponseMock.new(OpenStruct.new(body:error_content, response_headers:{'Content-Type' => 'text/html'}, status:500)))
|
418
425
|
object = ExampleClient.new(first_name:"John", should_disappear:true)
|
419
426
|
begin
|
420
427
|
object.create
|
@@ -431,7 +438,7 @@ describe ActiveRestClient::Request do
|
|
431
438
|
expect_any_instance_of(ActiveRestClient::Connection).
|
432
439
|
to receive(:post).
|
433
440
|
with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
|
434
|
-
and_return(OpenStruct.new(body:error_content,
|
441
|
+
and_return(::FaradayResponseMock.new(OpenStruct.new(body:error_content, response_headers:{'Content-Type' => 'text/html'}, status:400)))
|
435
442
|
object = ExampleClient.new(first_name:"John", should_disappear:true)
|
436
443
|
begin
|
437
444
|
object.create
|
@@ -448,7 +455,7 @@ describe ActiveRestClient::Request do
|
|
448
455
|
expect_any_instance_of(ActiveRestClient::Connection).
|
449
456
|
to receive(:post).
|
450
457
|
with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
|
451
|
-
and_return(OpenStruct.new(body:error_content,
|
458
|
+
and_return(::FaradayResponseMock.new(OpenStruct.new(body:error_content, response_headers:{'Content-Type' => 'text/html'}, status:200)))
|
452
459
|
object = ExampleClient.new(first_name:"John", should_disappear:true)
|
453
460
|
begin
|
454
461
|
object.create
|
@@ -464,7 +471,7 @@ describe ActiveRestClient::Request do
|
|
464
471
|
expect_any_instance_of(ActiveRestClient::Connection).
|
465
472
|
to receive(:post).
|
466
473
|
with("/create", "first_name=John&should_disappear=true", an_instance_of(Hash)).
|
467
|
-
and_return(OpenStruct.new(body:'{"errors": ["validation": "error in validation"]}',
|
474
|
+
and_return(::FaradayResponseMock.new(OpenStruct.new(body:'{"errors": ["validation": "error in validation"]}', response_headers:{'Content-Type' => 'text/html'}, status:400)))
|
468
475
|
object = ExampleClient.new(first_name:"John", should_disappear:true)
|
469
476
|
begin
|
470
477
|
object.create
|
@@ -474,20 +481,18 @@ describe ActiveRestClient::Request do
|
|
474
481
|
expect(e).to be_instance_of(ActiveRestClient::HTTPBadRequestClientException)
|
475
482
|
expect(e.status).to eq(400)
|
476
483
|
expect(object.first_name).to eq 'John'
|
477
|
-
expect(object.errors).to
|
484
|
+
expect(object.errors).to eq(nil)
|
478
485
|
end
|
479
486
|
|
480
487
|
it "should raise an exception if you try to pass in an unsupport method" do
|
481
488
|
method = {:method => :wiggle, url:"/"}
|
482
|
-
class RequestFakeObject
|
489
|
+
class RequestFakeObject < ActiveRestClient::Base
|
490
|
+
base_url "http://www.example.com/"
|
491
|
+
|
483
492
|
def request_body_type
|
484
493
|
:form_encoded
|
485
494
|
end
|
486
495
|
|
487
|
-
def base_url
|
488
|
-
"http://www.example.com/"
|
489
|
-
end
|
490
|
-
|
491
496
|
def username ; end
|
492
497
|
def password ; end
|
493
498
|
def name ; end
|
@@ -501,20 +506,20 @@ describe ActiveRestClient::Request do
|
|
501
506
|
end
|
502
507
|
|
503
508
|
it "should send all class mapped methods through _filter_request" do
|
504
|
-
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,
|
509
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"first_name\":\"Johnny\", \"expenses\":[{\"amount\":1}, {\"amount\":2}]}", status:200, response_headers:{})))
|
505
510
|
expect(ExampleClient).to receive(:_filter_request).with(any_args).exactly(2).times
|
506
511
|
ExampleClient.all
|
507
512
|
end
|
508
513
|
|
509
514
|
it "should send all instance mapped methods through _filter_request" do
|
510
|
-
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,
|
515
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"first_name\":\"Johnny\", \"expenses\":[{\"amount\":1}, {\"amount\":2}]}", status:200, response_headers:{})))
|
511
516
|
expect(ExampleClient).to receive(:_filter_request).with(any_args).exactly(2).times
|
512
517
|
e = ExampleClient.new
|
513
518
|
e.all
|
514
519
|
end
|
515
520
|
|
516
521
|
it "should change the generated object if an after_filter changes it" do
|
517
|
-
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,
|
522
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/change", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"first_name\":\"Johnny\", \"expenses\":[{\"amount\":1}, {\"amount\":2}]}", status:200, response_headers:{})))
|
518
523
|
obj = ExampleClient.change
|
519
524
|
expect(obj.test).to eq(1)
|
520
525
|
end
|
@@ -537,7 +542,7 @@ describe ActiveRestClient::Request do
|
|
537
542
|
expect_any_instance_of(ActiveRestClient::Connection).
|
538
543
|
to receive(:get).
|
539
544
|
with("/some/url", an_instance_of(Hash)).
|
540
|
-
and_return(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}",
|
545
|
+
and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}", response_headers:{}, status:200)))
|
541
546
|
SameServerExampleClient.same_server
|
542
547
|
end
|
543
548
|
|
@@ -547,7 +552,7 @@ describe ActiveRestClient::Request do
|
|
547
552
|
expect(connection).
|
548
553
|
to receive(:get).
|
549
554
|
with("/some/url", an_instance_of(Hash)).
|
550
|
-
and_return(OpenStruct.new(body:"{}",
|
555
|
+
and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{}", response_headers:{}, status:304)))
|
551
556
|
allow(connection).
|
552
557
|
to receive(:base_url).
|
553
558
|
and_return("http://other.example.com")
|
@@ -563,7 +568,7 @@ describe ActiveRestClient::Request do
|
|
563
568
|
expect(connection).
|
564
569
|
to receive(:get).
|
565
570
|
with("/v1/people", an_instance_of(Hash)).
|
566
|
-
and_return(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}",
|
571
|
+
and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{\"first_name\":\"John\", \"id\":1234}", response_headers:{}, status:200)))
|
567
572
|
@obj = SameServerExampleClient._request('/people')
|
568
573
|
end
|
569
574
|
end
|
@@ -573,7 +578,7 @@ describe ActiveRestClient::Request do
|
|
573
578
|
let(:hal) { ExampleClient.hal }
|
574
579
|
|
575
580
|
it "should request a HAL response or plain JSON" do
|
576
|
-
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}',
|
581
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/headers", hash_including("Accept" => "application/hal+json, application/json;q=0.5")).and_return(::FaradayResponseMock.new(OpenStruct.new(body:'{"result":true}', response_headers:{})))
|
577
582
|
ExampleClient.headers
|
578
583
|
end
|
579
584
|
|
@@ -589,17 +594,17 @@ describe ActiveRestClient::Request do
|
|
589
594
|
end
|
590
595
|
fake_object = RequestFakeObject.new
|
591
596
|
request = ActiveRestClient::Request.new(method, fake_object, {})
|
592
|
-
request.instance_variable_set(:@response, OpenStruct.new(
|
597
|
+
request.instance_variable_set(:@response, OpenStruct.new(response_headers:{"Content-Type" => "application/hal+json"}))
|
593
598
|
expect(request.hal_response?).to be_truthy
|
594
|
-
request.instance_variable_set(:@response, OpenStruct.new(
|
599
|
+
request.instance_variable_set(:@response, OpenStruct.new(response_headers:{"Content-Type" => "application/json"}))
|
595
600
|
expect(request.hal_response?).to be_truthy
|
596
|
-
request.instance_variable_set(:@response, OpenStruct.new(
|
601
|
+
request.instance_variable_set(:@response, OpenStruct.new(response_headers:{"Content-Type" => "text/plain"}))
|
597
602
|
expect(request.hal_response?).to be_falsey
|
598
|
-
request.instance_variable_set(:@response, OpenStruct.new(
|
603
|
+
request.instance_variable_set(:@response, OpenStruct.new(response_headers:{"Content-Type" => ["text/plain", "application/hal+json"]}))
|
599
604
|
expect(request.hal_response?).to be_truthy
|
600
|
-
request.instance_variable_set(:@response, OpenStruct.new(
|
605
|
+
request.instance_variable_set(:@response, OpenStruct.new(response_headers:{"Content-Type" => ["text/plain", "application/json"]}))
|
601
606
|
expect(request.hal_response?).to be_truthy
|
602
|
-
request.instance_variable_set(:@response, OpenStruct.new(
|
607
|
+
request.instance_variable_set(:@response, OpenStruct.new(response_headers:{"Content-Type" => ["text/plain"]}))
|
603
608
|
expect(request.hal_response?).to be_falsey
|
604
609
|
end
|
605
610
|
|
@@ -633,7 +638,59 @@ describe ActiveRestClient::Request do
|
|
633
638
|
end
|
634
639
|
|
635
640
|
it "replaces the body completely in a filter" do
|
636
|
-
expect_any_instance_of(ActiveRestClient::Connection).to receive(:post).with("/save", "{\"id\":1234,\"name\":\"john\"}", an_instance_of(Hash)).and_return(OpenStruct.new(body:"{}",
|
641
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:post).with("/save", "{\"id\":1234,\"name\":\"john\"}", an_instance_of(Hash)).and_return(::FaradayResponseMock.new(OpenStruct.new(body:"{}", response_headers:{})))
|
637
642
|
FilteredBodyExampleClient.save id:1234, name:'john'
|
638
643
|
end
|
644
|
+
|
645
|
+
context 'Simulating Faraday connection in_parallel' do
|
646
|
+
it 'should parse JSON and return a single object' do
|
647
|
+
response = ::FaradayResponseMock.new(
|
648
|
+
OpenStruct.new(body:"{\"result\":true, \"list\":[1,2,3,{\"test\":true}], \"created_at\":\"2012-03-04T01:02:03Z\", \"child\":{\"grandchild\":{\"test\":true}}}", response_headers:{}),
|
649
|
+
false)
|
650
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:put).with("/put/1234", "debug=true", an_instance_of(Hash)).and_return(response)
|
651
|
+
object = ExampleClient.update id:1234, debug:true
|
652
|
+
|
653
|
+
expect(object).to eq(nil)
|
654
|
+
|
655
|
+
response.finish
|
656
|
+
expect(object.result).to eq(true)
|
657
|
+
expect(object.list.first).to eq(1)
|
658
|
+
expect(object.list.last.test).to eq(true)
|
659
|
+
expect(object.created_at).to be_an_instance_of(DateTime)
|
660
|
+
expect(object.child.grandchild.test).to eq(true)
|
661
|
+
end
|
662
|
+
|
663
|
+
it 'should parse an array within JSON and return a result iterator' do
|
664
|
+
response = ::FaradayResponseMock.new(
|
665
|
+
OpenStruct.new(body:"[{\"first_name\":\"Johnny\"}, {\"first_name\":\"Billy\"}]", status:200, response_headers:{}),
|
666
|
+
false)
|
667
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:get).with("/", an_instance_of(Hash)).and_return(response)
|
668
|
+
object = ExampleClient.all
|
669
|
+
|
670
|
+
expect(object).to eq(nil)
|
671
|
+
|
672
|
+
response.finish
|
673
|
+
expect(object).to be_instance_of(ActiveRestClient::ResultIterator)
|
674
|
+
expect(object.first.first_name).to eq("Johnny")
|
675
|
+
expect(object[1].first_name).to eq("Billy")
|
676
|
+
expect(object._status).to eq(200)
|
677
|
+
object.each do |item|
|
678
|
+
expect(item).to_not be_nil
|
679
|
+
end
|
680
|
+
end
|
681
|
+
|
682
|
+
it 'should return a RequestDelegator object to wrap the result' do
|
683
|
+
response = ::FaradayResponseMock.new(
|
684
|
+
OpenStruct.new(body:"{\"result\":true, \"list\":[1,2,3,{\"test\":true}], \"created_at\":\"2012-03-04T01:02:03Z\", \"child\":{\"grandchild\":{\"test\":true}}}", response_headers:{}),
|
685
|
+
false)
|
686
|
+
expect_any_instance_of(ActiveRestClient::Connection).to receive(:put).with("/put/1234", "debug=true", an_instance_of(Hash)).and_return(response)
|
687
|
+
object = ExampleClient.update id:1234, debug:true
|
688
|
+
response.finish
|
689
|
+
|
690
|
+
expect(object.class).to eq(ExampleClient)
|
691
|
+
expect(object.kind_of?(ExampleClient)).to be_truthy
|
692
|
+
expect(object.is_a?(ExampleClient)).to be_truthy
|
693
|
+
expect(object._delegate?).to be_truthy
|
694
|
+
end
|
695
|
+
end
|
639
696
|
end
|
@@ -1,11 +1,18 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe ActiveRestClient::ResultIterator do
|
4
|
+
let(:response) { double(status: 200, response_headers: { some: 'header'}) }
|
5
|
+
|
4
6
|
it "should be able to have a status set during creation" do
|
5
|
-
result = ActiveRestClient::ResultIterator.new(
|
7
|
+
result = ActiveRestClient::ResultIterator.new(response)
|
6
8
|
expect(result._status).to eq(200)
|
7
9
|
end
|
8
10
|
|
11
|
+
it "should be able to have headers set during creation" do
|
12
|
+
result = ActiveRestClient::ResultIterator.new(response)
|
13
|
+
expect(result._headers).to eq({ some: 'header'})
|
14
|
+
end
|
15
|
+
|
9
16
|
it "should be able to have a status set after creation" do
|
10
17
|
result = ActiveRestClient::ResultIterator.new
|
11
18
|
result._status = 200
|