gds-api-adapters 7.16.1 → 7.17.0
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.
- data/lib/gds_api/router.rb +5 -0
- data/lib/gds_api/version.rb +1 -1
- data/test/router_test.rb +51 -2
- metadata +3 -3
data/lib/gds_api/router.rb
CHANGED
@@ -27,6 +27,11 @@ class GdsApi::Router < GdsApi::Base
|
|
27
27
|
put_json!("#{endpoint}/routes", :route => {:incoming_path => path, :route_type => type, :handler => "backend", :backend_id => backend_id})
|
28
28
|
end
|
29
29
|
|
30
|
+
def add_redirect_route(path, type, destination, redirect_type = "permanent")
|
31
|
+
put_json!("#{endpoint}/routes", :route => {:incoming_path => path, :route_type => type, :handler => "redirect",
|
32
|
+
:redirect_to => destination, :redirect_type => redirect_type})
|
33
|
+
end
|
34
|
+
|
30
35
|
def delete_route(path, type)
|
31
36
|
delete_json!("#{endpoint}/routes?incoming_path=#{CGI.escape(path)}&route_type=#{CGI.escape(type)}")
|
32
37
|
end
|
data/lib/gds_api/version.rb
CHANGED
data/test/router_test.rb
CHANGED
@@ -195,9 +195,8 @@ describe GdsApi::Router do
|
|
195
195
|
|
196
196
|
it "should raise an error if creating/updating the route fails" do
|
197
197
|
route_data = {"incoming_path" => "/foo", "route_type" => "exact", "handler" => "backend", "backend_id" => "foo"}
|
198
|
-
response_data = route_data.merge(
|
198
|
+
response_data = route_data.merge("errors" => {"backend_id" => "does not exist"})
|
199
199
|
|
200
|
-
response_data = {"backend_id" => "foo", "backend_url" => "ftp://foo.example.com/", "errors" => {"backend_url" => "is not an HTTP URL"}}
|
201
200
|
req = WebMock.stub_request(:put, "#{@base_api_url}/routes").
|
202
201
|
with(:body => {"route" => route_data}.to_json).
|
203
202
|
to_return(:status => 400, :body => response_data.to_json, :headers => {"Content-type" => "application/json"})
|
@@ -217,6 +216,56 @@ describe GdsApi::Router do
|
|
217
216
|
end
|
218
217
|
end
|
219
218
|
|
219
|
+
describe "creating/updating a redirect route" do
|
220
|
+
it "should allow creating/updating a redirect route" do
|
221
|
+
route_data = {"incoming_path" => "/foo", "route_type" => "exact", "handler" => "redirect", "redirect_to" => "/bar", "redirect_type" => "permanent"}
|
222
|
+
req = WebMock.stub_request(:put, "#{@base_api_url}/routes").
|
223
|
+
with(:body => {"route" => route_data}.to_json).
|
224
|
+
to_return(:status => 201, :body => route_data.to_json, :headers => {"Content-type" => "application/json"})
|
225
|
+
|
226
|
+
response = @api.add_redirect_route("/foo", "exact", "/bar")
|
227
|
+
assert_equal 201, response.code
|
228
|
+
assert_equal "/bar", response.redirect_to
|
229
|
+
|
230
|
+
assert_requested(req)
|
231
|
+
end
|
232
|
+
|
233
|
+
it "should allow creating/updating a temporary redirect route" do
|
234
|
+
route_data = {"incoming_path" => "/foo", "route_type" => "exact", "handler" => "redirect", "redirect_to" => "/bar", "redirect_type" => "temporary"}
|
235
|
+
req = WebMock.stub_request(:put, "#{@base_api_url}/routes").
|
236
|
+
with(:body => {"route" => route_data}.to_json).
|
237
|
+
to_return(:status => 201, :body => route_data.to_json, :headers => {"Content-type" => "application/json"})
|
238
|
+
|
239
|
+
response = @api.add_redirect_route("/foo", "exact", "/bar", "temporary")
|
240
|
+
assert_equal 201, response.code
|
241
|
+
assert_equal "/bar", response.redirect_to
|
242
|
+
|
243
|
+
assert_requested(req)
|
244
|
+
end
|
245
|
+
|
246
|
+
it "should raise an error if creating/updating the redirect route fails" do
|
247
|
+
route_data = {"incoming_path" => "/foo", "route_type" => "exact", "handler" => "redirect", "redirect_to" => "bar", "redirect_type" => "permanent"}
|
248
|
+
response_data = route_data.merge("errors" => {"redirect_to" => "is not a valid URL path"})
|
249
|
+
|
250
|
+
req = WebMock.stub_request(:put, "#{@base_api_url}/routes").
|
251
|
+
with(:body => {"route" => route_data}.to_json).
|
252
|
+
to_return(:status => 400, :body => response_data.to_json, :headers => {"Content-type" => "application/json"})
|
253
|
+
|
254
|
+
e = nil
|
255
|
+
begin
|
256
|
+
@api.add_redirect_route("/foo", "exact", "bar")
|
257
|
+
rescue GdsApi::HTTPErrorResponse => ex
|
258
|
+
e = ex
|
259
|
+
end
|
260
|
+
|
261
|
+
refute_nil e
|
262
|
+
assert_equal 400, e.code
|
263
|
+
assert_equal response_data, e.error_details
|
264
|
+
|
265
|
+
assert_requested(req)
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
220
269
|
describe "deleting a route" do
|
221
270
|
it "should allow deleting a route" do
|
222
271
|
route_data = {"incoming_path" => "/foo", "route_type" => "exact", "handler" => "backend", "backend_id" => "foo"}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gds-api-adapters
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.
|
4
|
+
version: 7.17.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -340,7 +340,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
340
340
|
version: '0'
|
341
341
|
segments:
|
342
342
|
- 0
|
343
|
-
hash:
|
343
|
+
hash: 965842329642647855
|
344
344
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
345
345
|
none: false
|
346
346
|
requirements:
|
@@ -349,7 +349,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
349
349
|
version: '0'
|
350
350
|
segments:
|
351
351
|
- 0
|
352
|
-
hash:
|
352
|
+
hash: 965842329642647855
|
353
353
|
requirements: []
|
354
354
|
rubyforge_project:
|
355
355
|
rubygems_version: 1.8.23
|