gds-api-adapters 13.0.0 → 14.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/gds-api-adapters.rb +1 -0
- data/lib/gds_api/content_store.rb +0 -4
- data/lib/gds_api/publishing_api.rb +15 -0
- data/lib/gds_api/test_helpers/content_item_helpers.rb +29 -0
- data/lib/gds_api/test_helpers/content_store.rb +3 -41
- data/lib/gds_api/test_helpers/publishing_api.rb +41 -0
- data/lib/gds_api/version.rb +1 -1
- data/test/content_store_test.rb +0 -7
- data/test/publishing_api_test.rb +21 -0
- metadata +9 -4
data/lib/gds-api-adapters.rb
CHANGED
@@ -0,0 +1,15 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
require_relative 'exceptions'
|
3
|
+
|
4
|
+
class GdsApi::PublishingApi < GdsApi::Base
|
5
|
+
|
6
|
+
def put_content_item(base_path, payload)
|
7
|
+
put_json!(content_item_url(base_path), payload)
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def content_item_url(base_path)
|
13
|
+
"#{endpoint}/content#{base_path}"
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
|
2
|
+
module GdsApi
|
3
|
+
module TestHelpers
|
4
|
+
module ContentItemHelpers
|
5
|
+
|
6
|
+
def content_item_for_base_path(base_path)
|
7
|
+
{
|
8
|
+
"title" => titleize_base_path(base_path),
|
9
|
+
"description" => "Description for #{base_path}",
|
10
|
+
"format" => "guide",
|
11
|
+
"need_ids" => ["100001"],
|
12
|
+
"public_updated_at" => "2014-05-06T12:01:00+00:00",
|
13
|
+
"base_path" => base_path,
|
14
|
+
"details" => {
|
15
|
+
"body" => "Some content for #{base_path}",
|
16
|
+
}
|
17
|
+
}
|
18
|
+
end
|
19
|
+
|
20
|
+
def titleize_base_path(base_path, options = {})
|
21
|
+
if options[:title_case]
|
22
|
+
base_path.gsub("-", " ").gsub(/\b./) {|m| m.upcase }
|
23
|
+
else
|
24
|
+
base_path.gsub(%r{[-/]}, " ").strip.capitalize
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -1,15 +1,15 @@
|
|
1
1
|
require 'gds_api/test_helpers/json_client_helper'
|
2
|
-
require 'gds_api/test_helpers/
|
2
|
+
require 'gds_api/test_helpers/content_item_helpers'
|
3
3
|
require 'json'
|
4
4
|
|
5
5
|
module GdsApi
|
6
6
|
module TestHelpers
|
7
7
|
module ContentStore
|
8
|
-
include
|
8
|
+
include ContentItemHelpers
|
9
9
|
|
10
10
|
CONTENT_STORE_ENDPOINT = Plek.current.find('content-store')
|
11
11
|
|
12
|
-
def content_store_has_item(base_path, body =
|
12
|
+
def content_store_has_item(base_path, body = content_item_for_base_path(base_path), expires_in = 900)
|
13
13
|
url = CONTENT_STORE_ENDPOINT + "/content" + base_path
|
14
14
|
body = body.to_json unless body.is_a?(String)
|
15
15
|
stub_request(:get, url).to_return(status: 200, body: body, headers: {cache_control: "public, max-age=#{expires_in}", date: Time.now.httpdate})
|
@@ -20,44 +20,6 @@ module GdsApi
|
|
20
20
|
stub_request(:get, url).to_return(status: 404, headers: {})
|
21
21
|
end
|
22
22
|
|
23
|
-
def stub_content_store_put_item(base_path, body = item_for_base_path(base_path))
|
24
|
-
url = CONTENT_STORE_ENDPOINT + "/content" + base_path
|
25
|
-
body = body.to_json unless body.is_a?(String)
|
26
|
-
stub_request(:put, url).with(body: body).to_return(status: 201, body: body, headers: {})
|
27
|
-
end
|
28
|
-
|
29
|
-
def stub_default_content_store_put()
|
30
|
-
stub_request(:put, %r{\A#{CONTENT_STORE_ENDPOINT}/content})
|
31
|
-
end
|
32
|
-
|
33
|
-
def item_for_base_path(base_path)
|
34
|
-
{
|
35
|
-
"title" => titleize_slug(base_path),
|
36
|
-
"description" => "Description for #{base_path}",
|
37
|
-
"format" => "guide",
|
38
|
-
"need_ids" => ["100001"],
|
39
|
-
"public_updated_at" => "2014-05-06T12:01:00+00:00",
|
40
|
-
"base_path" => base_path,
|
41
|
-
"details" => {
|
42
|
-
"body" => "Some content for #{base_path}",
|
43
|
-
}
|
44
|
-
}
|
45
|
-
end
|
46
|
-
|
47
|
-
def assert_content_store_put_item(base_path, attributes = {})
|
48
|
-
url = CONTENT_STORE_ENDPOINT + "/content" + base_path
|
49
|
-
if attributes.empty?
|
50
|
-
assert_requested(:put, url)
|
51
|
-
else
|
52
|
-
assert_requested(:put, url) do |req|
|
53
|
-
data = JSON.parse(req.body)
|
54
|
-
attributes.to_a.all? do |key, value|
|
55
|
-
data[key.to_s] == value
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
23
|
def content_store_isnt_available
|
62
24
|
stub_request(:any, /#{CONTENT_STORE_ENDPOINT}\/.*/).to_return(:status => 503)
|
63
25
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'gds_api/test_helpers/json_client_helper'
|
2
|
+
require 'gds_api/test_helpers/content_item_helpers'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
module GdsApi
|
6
|
+
module TestHelpers
|
7
|
+
module PublishingApi
|
8
|
+
include ContentItemHelpers
|
9
|
+
|
10
|
+
PUBLISHING_API_ENDPOINT = Plek.current.find('publishing-api')
|
11
|
+
|
12
|
+
def stub_publishing_api_put_item(base_path, body = content_item_for_base_path(base_path))
|
13
|
+
url = PUBLISHING_API_ENDPOINT + "/content" + base_path
|
14
|
+
body = body.to_json unless body.is_a?(String)
|
15
|
+
stub_request(:put, url).with(body: body).to_return(status: 201, body: body, headers: {})
|
16
|
+
end
|
17
|
+
|
18
|
+
def stub_default_publishing_api_put()
|
19
|
+
stub_request(:put, %r{\A#{PUBLISHING_API_ENDPOINT}/content})
|
20
|
+
end
|
21
|
+
|
22
|
+
def assert_publishing_api_put_item(base_path, attributes = {})
|
23
|
+
url = PUBLISHING_API_ENDPOINT + "/content" + base_path
|
24
|
+
if attributes.empty?
|
25
|
+
assert_requested(:put, url)
|
26
|
+
else
|
27
|
+
assert_requested(:put, url) do |req|
|
28
|
+
data = JSON.parse(req.body)
|
29
|
+
attributes.to_a.all? do |key, value|
|
30
|
+
data[key.to_s] == value
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def publishing_api_isnt_available
|
37
|
+
stub_request(:any, /#{PUBLISHING_API_ENDPOINT}\/.*/).to_return(:status => 503)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/gds_api/version.rb
CHANGED
data/test/content_store_test.rb
CHANGED
@@ -17,12 +17,5 @@ describe GdsApi::ContentStore do
|
|
17
17
|
response = @api.content_item(base_path)
|
18
18
|
assert_equal base_path, response["base_path"]
|
19
19
|
end
|
20
|
-
|
21
|
-
it "should create the item" do
|
22
|
-
base_path = "/test-to-content-store"
|
23
|
-
stub_content_store_put_item(base_path)
|
24
|
-
response = @api.put_content_item(base_path, item_for_base_path(base_path))
|
25
|
-
assert_equal base_path, response["base_path"]
|
26
|
-
end
|
27
20
|
end
|
28
21
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'gds_api/publishing_api'
|
3
|
+
require 'gds_api/test_helpers/publishing_api'
|
4
|
+
|
5
|
+
describe GdsApi::PublishingApi do
|
6
|
+
include GdsApi::TestHelpers::PublishingApi
|
7
|
+
|
8
|
+
before do
|
9
|
+
@base_api_url = Plek.current.find("publishing-api")
|
10
|
+
@api = GdsApi::PublishingApi.new(@base_api_url)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "item" do
|
14
|
+
it "should create the item" do
|
15
|
+
base_path = "/test-to-publishing-api"
|
16
|
+
stub_publishing_api_put_item(base_path)
|
17
|
+
response = @api.put_content_item(base_path, content_item_for_base_path(base_path))
|
18
|
+
assert_equal base_path, response["base_path"]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
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:
|
4
|
+
version: 14.0.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: 2014-
|
12
|
+
date: 2014-08-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: plek
|
@@ -313,10 +313,12 @@ files:
|
|
313
313
|
- lib/gds_api/test_helpers/content_api/artefact_stub.rb
|
314
314
|
- lib/gds_api/test_helpers/performance_platform/data_in.rb
|
315
315
|
- lib/gds_api/test_helpers/licence_application.rb
|
316
|
+
- lib/gds_api/test_helpers/content_item_helpers.rb
|
316
317
|
- lib/gds_api/test_helpers/organisations.rb
|
317
318
|
- lib/gds_api/test_helpers/business_support_helper.rb
|
318
319
|
- lib/gds_api/test_helpers/imminence.rb
|
319
320
|
- lib/gds_api/test_helpers/worldwide.rb
|
321
|
+
- lib/gds_api/test_helpers/publishing_api.rb
|
320
322
|
- lib/gds_api/test_helpers/mapit.rb
|
321
323
|
- lib/gds_api/test_helpers/panopticon.rb
|
322
324
|
- lib/gds_api/test_helpers/json_client_helper.rb
|
@@ -337,6 +339,7 @@ files:
|
|
337
339
|
- lib/gds_api/govuk_request_id.rb
|
338
340
|
- lib/gds_api/maslow.rb
|
339
341
|
- lib/gds_api/worldwide.rb
|
342
|
+
- lib/gds_api/publishing_api.rb
|
340
343
|
- lib/gds_api/mapit.rb
|
341
344
|
- lib/gds_api/helpers.rb
|
342
345
|
- lib/gds_api/middleware/govuk_request_id_sniffer.rb
|
@@ -357,6 +360,7 @@ files:
|
|
357
360
|
- Rakefile
|
358
361
|
- test/support_api_test.rb
|
359
362
|
- test/mapit_test.rb
|
363
|
+
- test/publishing_api_test.rb
|
360
364
|
- test/pp_data_in_test.rb
|
361
365
|
- test/finder_schema_test.rb
|
362
366
|
- test/need_api_test.rb
|
@@ -405,7 +409,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
405
409
|
version: '0'
|
406
410
|
segments:
|
407
411
|
- 0
|
408
|
-
hash: -
|
412
|
+
hash: -3050602615371028442
|
409
413
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
410
414
|
none: false
|
411
415
|
requirements:
|
@@ -414,7 +418,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
414
418
|
version: '0'
|
415
419
|
segments:
|
416
420
|
- 0
|
417
|
-
hash: -
|
421
|
+
hash: -3050602615371028442
|
418
422
|
requirements: []
|
419
423
|
rubyforge_project:
|
420
424
|
rubygems_version: 1.8.23
|
@@ -424,6 +428,7 @@ summary: Adapters to work with GDS APIs
|
|
424
428
|
test_files:
|
425
429
|
- test/support_api_test.rb
|
426
430
|
- test/mapit_test.rb
|
431
|
+
- test/publishing_api_test.rb
|
427
432
|
- test/pp_data_in_test.rb
|
428
433
|
- test/finder_schema_test.rb
|
429
434
|
- test/need_api_test.rb
|