gds-api-adapters 7.17.1 → 7.18.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -23,16 +23,26 @@ class GdsApi::Router < GdsApi::Base
23
23
  get_json("#{endpoint}/routes?incoming_path=#{CGI.escape(path)}&route_type=#{CGI.escape(type)}")
24
24
  end
25
25
 
26
- def add_route(path, type, backend_id)
27
- put_json!("#{endpoint}/routes", :route => {:incoming_path => path, :route_type => type, :handler => "backend", :backend_id => backend_id})
26
+ def add_route(path, type, backend_id, options = {})
27
+ response = put_json!("#{endpoint}/routes", :route => {:incoming_path => path, :route_type => type, :handler => "backend", :backend_id => backend_id})
28
+ commit_routes unless options[:skip_commit]
29
+ response
28
30
  end
29
31
 
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
+ def add_redirect_route(path, type, destination, redirect_type = "permanent", options = {})
33
+ response = put_json!("#{endpoint}/routes", :route => {:incoming_path => path, :route_type => type, :handler => "redirect",
32
34
  :redirect_to => destination, :redirect_type => redirect_type})
35
+ commit_routes unless options[:skip_commit]
36
+ response
33
37
  end
34
38
 
35
- def delete_route(path, type)
36
- delete_json!("#{endpoint}/routes?incoming_path=#{CGI.escape(path)}&route_type=#{CGI.escape(type)}")
39
+ def delete_route(path, type, options = {})
40
+ response = delete_json!("#{endpoint}/routes?incoming_path=#{CGI.escape(path)}&route_type=#{CGI.escape(type)}")
41
+ commit_routes unless options[:skip_commit]
42
+ response
43
+ end
44
+
45
+ def commit_routes
46
+ post_json!("#{endpoint}/routes/commit", {})
37
47
  end
38
48
  end
@@ -5,12 +5,12 @@ module GdsApi
5
5
  class Rummager < Base
6
6
 
7
7
  def search(query, extra_params={})
8
- return [] if query.nil? || query == ""
8
+ raise ArgumentError.new("Query cannot be blank") if query.nil? || query.strip.empty?
9
9
  get_json!(search_url(:search, query, extra_params))
10
10
  end
11
11
 
12
12
  def advanced_search(args)
13
- return [] if args.nil? || args.empty?
13
+ raise ArgumentError.new("Args cannot be blank") if args.nil? || args.empty?
14
14
  request_path = "#{base_url}/advanced_search?#{Rack::Utils.build_nested_query(args)}"
15
15
  get_json!(request_path)
16
16
  end
@@ -1,3 +1,3 @@
1
1
  module GdsApi
2
- VERSION = '7.17.1'
2
+ VERSION = '7.18.0'
3
3
  end
data/test/router_test.rb CHANGED
@@ -140,6 +140,11 @@ describe GdsApi::Router do
140
140
  end
141
141
 
142
142
  describe "managing routes" do
143
+ before :each do
144
+ @commit_req = WebMock.stub_request(:post, "#{@base_api_url}/routes/commit").
145
+ to_return(:status => 200, :body => "Routers updated")
146
+ end
147
+
143
148
  describe "fetching a route" do
144
149
  it "should return the route details" do
145
150
  route_data = {"incoming_path" => "/foo", "route_type" => "exact", "handler" => "backend", "backend_id" => "foo"}
@@ -152,6 +157,7 @@ describe GdsApi::Router do
152
157
  assert_equal "foo", response.backend_id
153
158
 
154
159
  assert_requested(req)
160
+ assert_not_requested(@commit_req)
155
161
  end
156
162
 
157
163
  it "should return nil if nothing found" do
@@ -163,6 +169,7 @@ describe GdsApi::Router do
163
169
  assert_nil response
164
170
 
165
171
  assert_requested(req)
172
+ assert_not_requested(@commit_req)
166
173
  end
167
174
 
168
175
  it "should escape the params" do
@@ -176,6 +183,7 @@ describe GdsApi::Router do
176
183
  assert_nil response
177
184
 
178
185
  assert_requested(req)
186
+ assert_not_requested(@commit_req)
179
187
  end
180
188
  end
181
189
 
@@ -191,6 +199,17 @@ describe GdsApi::Router do
191
199
  assert_equal "foo", response.backend_id
192
200
 
193
201
  assert_requested(req)
202
+ assert_requested(@commit_req)
203
+ end
204
+
205
+ it "should not commit the routes when asked not to" do
206
+ req = WebMock.stub_request(:put, "#{@base_api_url}/routes").
207
+ to_return(:status => 201, :body => {}.to_json, :headers => {"Content-type" => "application/json"})
208
+
209
+ @api.add_route("/foo", "exact", "foo", :skip_commit => true)
210
+
211
+ assert_requested(req)
212
+ assert_not_requested(@commit_req)
194
213
  end
195
214
 
196
215
  it "should raise an error if creating/updating the route fails" do
@@ -213,6 +232,7 @@ describe GdsApi::Router do
213
232
  assert_equal response_data, e.error_details
214
233
 
215
234
  assert_requested(req)
235
+ assert_not_requested(@commit_req)
216
236
  end
217
237
  end
218
238
 
@@ -228,6 +248,7 @@ describe GdsApi::Router do
228
248
  assert_equal "/bar", response.redirect_to
229
249
 
230
250
  assert_requested(req)
251
+ assert_requested(@commit_req)
231
252
  end
232
253
 
233
254
  it "should allow creating/updating a temporary redirect route" do
@@ -241,6 +262,17 @@ describe GdsApi::Router do
241
262
  assert_equal "/bar", response.redirect_to
242
263
 
243
264
  assert_requested(req)
265
+ assert_requested(@commit_req)
266
+ end
267
+
268
+ it "should not commit the routes when asked not to" do
269
+ req = WebMock.stub_request(:put, "#{@base_api_url}/routes").
270
+ to_return(:status => 201, :body =>{}.to_json, :headers => {"Content-type" => "application/json"})
271
+
272
+ @api.add_redirect_route("/foo", "exact", "/bar", "temporary", :skip_commit => true)
273
+
274
+ assert_requested(req)
275
+ assert_not_requested(@commit_req)
244
276
  end
245
277
 
246
278
  it "should raise an error if creating/updating the redirect route fails" do
@@ -263,6 +295,7 @@ describe GdsApi::Router do
263
295
  assert_equal response_data, e.error_details
264
296
 
265
297
  assert_requested(req)
298
+ assert_not_requested(@commit_req)
266
299
  end
267
300
  end
268
301
 
@@ -278,6 +311,18 @@ describe GdsApi::Router do
278
311
  assert_equal "foo", response.backend_id
279
312
 
280
313
  assert_requested(req)
314
+ assert_requested(@commit_req)
315
+ end
316
+
317
+ it "should not commit the routes when asked not to" do
318
+ req = WebMock.stub_request(:delete, "#{@base_api_url}/routes").
319
+ with(:query => {"incoming_path" => "/foo", "route_type" => "exact"}).
320
+ to_return(:status => 200, :body => {}.to_json, :headers => {"Content-type" => "application/json"})
321
+
322
+ @api.delete_route("/foo", "exact", :skip_commit => true)
323
+
324
+ assert_requested(req)
325
+ assert_not_requested(@commit_req)
281
326
  end
282
327
 
283
328
  it "should raise HTTPNotFound if nothing found" do
@@ -296,6 +341,7 @@ describe GdsApi::Router do
296
341
  assert_equal 404, e.code
297
342
 
298
343
  assert_requested(req)
344
+ assert_not_requested(@commit_req)
299
345
  end
300
346
 
301
347
  it "should escape the params" do
@@ -313,5 +359,29 @@ describe GdsApi::Router do
313
359
  assert_requested(req)
314
360
  end
315
361
  end
362
+
363
+ describe "committing the routes" do
364
+ it "should allow committing the routes" do
365
+ @api.commit_routes
366
+
367
+ assert_requested(@commit_req)
368
+ end
369
+
370
+ it "should raise an error if committing the routes fails" do
371
+ req = WebMock.stub_request(:post, "#{@base_api_url}/routes/commit").
372
+ to_return(:status => 500, :body => "Failed to update all routers")
373
+
374
+ e = nil
375
+ begin
376
+ @api.commit_routes
377
+ rescue GdsApi::HTTPErrorResponse => ex
378
+ e = ex
379
+ end
380
+
381
+ refute_nil e
382
+ assert_equal 500, e.code
383
+ assert_equal "Failed to update all routers", e.message
384
+ end
385
+ end
316
386
  end
317
387
  end
@@ -37,17 +37,15 @@ describe GdsApi::Rummager do
37
37
  end
38
38
 
39
39
  it "should return an empty set of results without making request if query is empty" do
40
- results = GdsApi::Rummager.new("http://example.com").search("")
41
-
42
- assert_equal [], results
43
- assert_not_requested :get, /example.com/
40
+ assert_raises(ArgumentError) do
41
+ GdsApi::Rummager.new("http://example.com").search("")
42
+ end
44
43
  end
45
44
 
46
45
  it "should return an empty set of results without making request if query is nil" do
47
- results = GdsApi::Rummager.new("http://example.com").search(nil)
48
-
49
- assert_equal [], results
50
- assert_not_requested :get, /example.com/
46
+ assert_raises(ArgumentError) do
47
+ GdsApi::Rummager.new("http://example.com").search(nil)
48
+ end
51
49
  end
52
50
 
53
51
  it "should request the search results in JSON format" do
@@ -116,17 +114,15 @@ describe GdsApi::Rummager do
116
114
  end
117
115
 
118
116
  it "#advanced_search should return an empty set of results without making request if arguments are empty" do
119
- results = GdsApi::Rummager.new("http://example.com").advanced_search({})
120
-
121
- assert_equal [], results
122
- assert_not_requested :get, /example.com/
117
+ assert_raises(ArgumentError) do
118
+ GdsApi::Rummager.new("http://example.com").advanced_search({})
119
+ end
123
120
  end
124
121
 
125
122
  it "#advanced_search should return an empty set of results without making request if arguments is nil" do
126
- results = GdsApi::Rummager.new("http://example.com").advanced_search(nil)
127
-
128
- assert_equal [], results
129
- assert_not_requested :get, /example.com/
123
+ assert_raises(ArgumentError) do
124
+ results = GdsApi::Rummager.new("http://example.com").advanced_search(nil)
125
+ end
130
126
  end
131
127
 
132
128
  it "#advanced_search should request the search results in JSON format" do
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.17.1
4
+ version: 7.18.0
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: 2013-11-01 00:00:00.000000000 Z
12
+ date: 2013-11-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: plek
@@ -340,7 +340,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
340
340
  version: '0'
341
341
  segments:
342
342
  - 0
343
- hash: -187163505061002706
343
+ hash: 471718950989814646
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: -187163505061002706
352
+ hash: 471718950989814646
353
353
  requirements: []
354
354
  rubyforge_project:
355
355
  rubygems_version: 1.8.23