hal-client 3.0 → 3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/hal_client/version.rb +1 -1
- data/lib/hal_client.rb +5 -1
- data/spec/hal_client_spec.rb +24 -2
- metadata +4 -4
data/lib/hal_client/version.rb
CHANGED
data/lib/hal_client.rb
CHANGED
@@ -89,7 +89,11 @@ class HalClient
|
|
89
89
|
begin
|
90
90
|
Representation.new hal_client: self, parsed_json: MultiJson.load(resp.to_s)
|
91
91
|
rescue MultiJson::ParseError, InvalidRepresentationError => e
|
92
|
-
resp
|
92
|
+
if resp.headers["Location"]
|
93
|
+
Representation.new hal_client: self, href: resp.headers["Location"]
|
94
|
+
else
|
95
|
+
resp
|
96
|
+
end
|
93
97
|
end
|
94
98
|
|
95
99
|
when 400...500
|
data/spec/hal_client_spec.rb
CHANGED
@@ -131,13 +131,32 @@ describe HalClient do
|
|
131
131
|
|
132
132
|
describe "#post(<url>)" do
|
133
133
|
subject(:client) { HalClient.new }
|
134
|
-
let
|
134
|
+
let(:url) { "http://example.com/foo" }
|
135
|
+
let(:return_val) { client.post url, post_data }
|
135
136
|
|
136
137
|
it "returns a HalClient::Representation" do
|
137
138
|
expect(return_val).to be_kind_of HalClient::Representation
|
138
139
|
end
|
139
140
|
|
141
|
+
context "201 response w/ location header and w/o body" do
|
142
|
+
let(:url) { "http://example.com/lhnb" }
|
143
|
+
let!(:req) { stub_request(:post, url).
|
144
|
+
to_return(status: 201,
|
145
|
+
body: nil,
|
146
|
+
headers: {"Location" => "http://example.com/new"})
|
147
|
+
}
|
148
|
+
|
149
|
+
it "returns a HalClient::Representation" do
|
150
|
+
expect(return_val).to be_kind_of HalClient::Representation
|
151
|
+
end
|
152
|
+
|
153
|
+
it "returns representation of new resource" do
|
154
|
+
expect(return_val.href).to eq "http://example.com/new"
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
140
158
|
describe "request" do
|
159
|
+
before do return_val end
|
141
160
|
subject { post_request }
|
142
161
|
it("should have been made") { should have_been_made }
|
143
162
|
|
@@ -148,6 +167,7 @@ describe HalClient do
|
|
148
167
|
end
|
149
168
|
|
150
169
|
context "explicit content type" do
|
170
|
+
before do return_val end
|
151
171
|
subject(:client) { HalClient.new content_type: 'app/test' }
|
152
172
|
it "sends specified content-type header" do
|
153
173
|
expect(post_request.with(headers: {'Content-Type' => 'app/test'})).
|
@@ -156,6 +176,7 @@ describe HalClient do
|
|
156
176
|
end
|
157
177
|
|
158
178
|
context "other headers" do
|
179
|
+
before do return_val end
|
159
180
|
let(:headers) { {"Authorization" => "Bearer f73c04b0970f1deb6005fab53edd1708"} }
|
160
181
|
subject(:client) { HalClient.new headers: headers }
|
161
182
|
it "sends the supplied header" do
|
@@ -163,7 +184,7 @@ describe HalClient do
|
|
163
184
|
end
|
164
185
|
end
|
165
186
|
|
166
|
-
context "with no response body" do
|
187
|
+
context "with no response body and no location header" do
|
167
188
|
subject { empty_post_request }
|
168
189
|
let!(:return_val) { client.post "http://example.com/foo", nil }
|
169
190
|
|
@@ -191,6 +212,7 @@ describe HalClient do
|
|
191
212
|
end
|
192
213
|
end
|
193
214
|
|
215
|
+
|
194
216
|
let(:post_data) { "ABC" }
|
195
217
|
|
196
218
|
let!(:empty_post_request) { stub_request(:post, "http://example.com/foo").
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hal-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '3.
|
4
|
+
version: '3.1'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-05-
|
12
|
+
date: 2014-05-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: http
|
@@ -190,7 +190,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
190
190
|
version: '0'
|
191
191
|
segments:
|
192
192
|
- 0
|
193
|
-
hash: -
|
193
|
+
hash: -1711145322493868301
|
194
194
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
195
195
|
none: false
|
196
196
|
requirements:
|
@@ -199,7 +199,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
199
199
|
version: '0'
|
200
200
|
segments:
|
201
201
|
- 0
|
202
|
-
hash: -
|
202
|
+
hash: -1711145322493868301
|
203
203
|
requirements: []
|
204
204
|
rubyforge_project:
|
205
205
|
rubygems_version: 1.8.23
|