gds-api-adapters 27.0.0 → 27.1.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.
- checksums.yaml +4 -4
- data/lib/gds_api/exceptions.rb +4 -3
- data/lib/gds_api/json_client.rb +2 -2
- data/lib/gds_api/test_helpers/email_alert_api.rb +18 -5
- data/lib/gds_api/version.rb +1 -1
- data/test/content_store_test.rb +1 -1
- data/test/email_alert_api_test.rb +1 -1
- data/test/publishing_api_v2_test.rb +96 -0
- data/test/router_test.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2cc5c429a92aa4d47b59848ce81b9e9504c9fab8
|
4
|
+
data.tar.gz: 7fc82ec64a0798bdcc0757f0f2623f2670f42160
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0836a94e3cb61226df632dfff455226282b89e3df98cfbe83ecf5ee854602c1786a6c1c3544b39495e07a99e6cb1666266512acefe76684a1447aefb0f352415
|
7
|
+
data.tar.gz: 838dc7fcc6d4b5c2cde66ad9f6a069840f597b0464c194784ee901af5579acbb7b3fc4d5f12c531f3cd2c3035810271041da20b329f129aaa7e45ac7210f871e
|
data/lib/gds_api/exceptions.rb
CHANGED
@@ -14,10 +14,11 @@ module GdsApi
|
|
14
14
|
class HTTPErrorResponse < BaseError
|
15
15
|
attr_accessor :code, :error_details
|
16
16
|
|
17
|
-
def initialize(code, message = nil, error_details = nil)
|
17
|
+
def initialize(code, message = nil, error_details = nil, request_body = nil)
|
18
18
|
super(message)
|
19
19
|
@code = code
|
20
20
|
@error_details = error_details
|
21
|
+
@request_body = request_body
|
21
22
|
end
|
22
23
|
end
|
23
24
|
|
@@ -52,8 +53,8 @@ module GdsApi
|
|
52
53
|
ignoring([HTTPNotFound, HTTPGone], &block)
|
53
54
|
end
|
54
55
|
|
55
|
-
def build_specific_http_error(error, url, details = nil)
|
56
|
-
message = "
|
56
|
+
def build_specific_http_error(error, url, details = nil, request_body = nil)
|
57
|
+
message = "URL: #{url}\nResponse body:\n#{error.http_body}\n\nRequest body:\n#{request_body}"
|
57
58
|
code = error.http_code
|
58
59
|
|
59
60
|
case code
|
data/lib/gds_api/json_client.rb
CHANGED
@@ -121,7 +121,7 @@ module GdsApi
|
|
121
121
|
def do_raw_request(method, url, params = nil)
|
122
122
|
response = do_request(method, url, params)
|
123
123
|
rescue RestClient::Exception => e
|
124
|
-
raise build_specific_http_error(e, url)
|
124
|
+
raise build_specific_http_error(e, url, nil, params)
|
125
125
|
end
|
126
126
|
|
127
127
|
# method: the symbolic name of the method to use, e.g. :get, :post
|
@@ -141,7 +141,7 @@ module GdsApi
|
|
141
141
|
rescue JSON::ParserError
|
142
142
|
nil
|
143
143
|
end
|
144
|
-
raise build_specific_http_error(e, url, error_details)
|
144
|
+
raise build_specific_http_error(e, url, error_details, params)
|
145
145
|
end
|
146
146
|
|
147
147
|
# If no custom response is given, just instantiate Response
|
@@ -4,13 +4,15 @@ require 'json'
|
|
4
4
|
module GdsApi
|
5
5
|
module TestHelpers
|
6
6
|
module EmailAlertApi
|
7
|
+
EMAIL_ALERT_API_ENDPOINT = Plek.find("email-alert-api")
|
8
|
+
|
7
9
|
def email_alert_api_has_subscriber_list(attributes)
|
8
10
|
title = attributes.fetch("title")
|
9
11
|
tags = attributes.fetch("tags")
|
10
12
|
|
11
13
|
query = Rack::Utils.build_nested_query(tags: tags)
|
12
14
|
|
13
|
-
stub_request(:get,
|
15
|
+
stub_request(:get, subscriber_lists_url(query))
|
14
16
|
.to_return(
|
15
17
|
:status => 200,
|
16
18
|
:body => get_subscriber_list_response(attributes).to_json,
|
@@ -20,12 +22,12 @@ module GdsApi
|
|
20
22
|
def email_alert_api_does_not_have_subscriber_list(attributes)
|
21
23
|
query = Rack::Utils.build_nested_query(tags: attributes.fetch("tags"))
|
22
24
|
|
23
|
-
stub_request(:get,
|
25
|
+
stub_request(:get, subscriber_lists_url(query))
|
24
26
|
.to_return(status: 404)
|
25
27
|
end
|
26
28
|
|
27
29
|
def email_alert_api_creates_subscriber_list(attributes)
|
28
|
-
stub_request(:post,
|
30
|
+
stub_request(:post, subscriber_lists_url)
|
29
31
|
.to_return(
|
30
32
|
:status => 201,
|
31
33
|
:body => get_subscriber_list_response(attributes).to_json,
|
@@ -33,7 +35,7 @@ module GdsApi
|
|
33
35
|
end
|
34
36
|
|
35
37
|
def email_alert_api_refuses_to_create_subscriber_list
|
36
|
-
stub_request(:post,
|
38
|
+
stub_request(:post, subscriber_lists_url)
|
37
39
|
.to_return(
|
38
40
|
:status => 422,
|
39
41
|
)
|
@@ -54,7 +56,7 @@ module GdsApi
|
|
54
56
|
end
|
55
57
|
|
56
58
|
def email_alert_api_accepts_alert
|
57
|
-
stub_request(:post,
|
59
|
+
stub_request(:post, notifications_url)
|
58
60
|
.to_return(
|
59
61
|
:status => 202,
|
60
62
|
:body => {}.to_json,
|
@@ -64,6 +66,17 @@ module GdsApi
|
|
64
66
|
def post_alert_response
|
65
67
|
{}
|
66
68
|
end
|
69
|
+
|
70
|
+
private
|
71
|
+
|
72
|
+
def subscriber_lists_url(query = nil)
|
73
|
+
url = EMAIL_ALERT_API_ENDPOINT + "/subscriber-lists"
|
74
|
+
query ? "#{url}?#{query}" : url
|
75
|
+
end
|
76
|
+
|
77
|
+
def notifications_url
|
78
|
+
EMAIL_ALERT_API_ENDPOINT + "/notifications"
|
79
|
+
end
|
67
80
|
end
|
68
81
|
end
|
69
82
|
end
|
data/lib/gds_api/version.rb
CHANGED
data/test/content_store_test.rb
CHANGED
@@ -45,7 +45,7 @@ describe GdsApi::ContentStore do
|
|
45
45
|
end
|
46
46
|
|
47
47
|
assert_equal 404, e.code
|
48
|
-
assert_equal "
|
48
|
+
assert_equal "URL: #{@base_api_url}/content/non-existent\nResponse body:\n\n\nRequest body:", e.message.strip
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
@@ -5,7 +5,7 @@ require 'gds_api/test_helpers/email_alert_api'
|
|
5
5
|
describe GdsApi::EmailAlertApi do
|
6
6
|
include GdsApi::TestHelpers::EmailAlertApi
|
7
7
|
|
8
|
-
let(:base_url) { "
|
8
|
+
let(:base_url) { Plek.find("email-alert-api") }
|
9
9
|
let(:api_client) { GdsApi::EmailAlertApi.new(base_url) }
|
10
10
|
|
11
11
|
let(:title) { "Some Title" }
|
@@ -925,6 +925,102 @@ describe GdsApi::PublishingApiV2 do
|
|
925
925
|
{ 'title' => 'Content Item B', 'base_path' => '/another-base-path' },
|
926
926
|
], response.to_a
|
927
927
|
end
|
928
|
+
|
929
|
+
it "returns the content items in english locale by default" do
|
930
|
+
publishing_api
|
931
|
+
.given("a content item exists in multiple locales with content_id: #{@content_id}")
|
932
|
+
.upon_receiving("a get entries request")
|
933
|
+
.with(
|
934
|
+
method: :get,
|
935
|
+
path: "/v2/content",
|
936
|
+
query: "content_format=topic&fields%5B%5D=content_id&fields%5B%5D=locale",
|
937
|
+
headers: {
|
938
|
+
"Content-Type" => "application/json",
|
939
|
+
},
|
940
|
+
)
|
941
|
+
.will_respond_with(
|
942
|
+
status: 200,
|
943
|
+
body: [
|
944
|
+
{ content_id: @content_id, locale: "en" },
|
945
|
+
]
|
946
|
+
)
|
947
|
+
|
948
|
+
response = @api_client.get_content_items(
|
949
|
+
content_format: 'topic',
|
950
|
+
fields: [:content_id, :locale],
|
951
|
+
)
|
952
|
+
|
953
|
+
assert_equal 200, response.code
|
954
|
+
assert_equal [
|
955
|
+
{ 'content_id' => @content_id, 'locale' => 'en' },
|
956
|
+
], response.to_a
|
957
|
+
end
|
958
|
+
|
959
|
+
it "returns the content items in a specific locale" do
|
960
|
+
publishing_api
|
961
|
+
.given("a content item exists in multiple locales with content_id: #{@content_id}")
|
962
|
+
.upon_receiving("a get entries request with a specific locale")
|
963
|
+
.with(
|
964
|
+
method: :get,
|
965
|
+
path: "/v2/content",
|
966
|
+
query: "content_format=topic&fields%5B%5D=content_id&fields%5B%5D=locale&locale=fr",
|
967
|
+
headers: {
|
968
|
+
"Content-Type" => "application/json",
|
969
|
+
},
|
970
|
+
)
|
971
|
+
.will_respond_with(
|
972
|
+
status: 200,
|
973
|
+
body: [
|
974
|
+
{ content_id: @content_id, locale: "fr" },
|
975
|
+
]
|
976
|
+
)
|
977
|
+
|
978
|
+
response = @api_client.get_content_items(
|
979
|
+
content_format: 'topic',
|
980
|
+
fields: [:content_id, :locale],
|
981
|
+
locale: 'fr',
|
982
|
+
)
|
983
|
+
|
984
|
+
assert_equal 200, response.code
|
985
|
+
assert_equal [
|
986
|
+
{ 'content_id' => @content_id, 'locale' => 'fr' },
|
987
|
+
], response.to_a
|
988
|
+
end
|
989
|
+
|
990
|
+
it "returns the content items in all the available locales" do
|
991
|
+
publishing_api
|
992
|
+
.given("a content item exists in multiple locales with content_id: #{@content_id}")
|
993
|
+
.upon_receiving("a get entries request with an 'all' locale")
|
994
|
+
.with(
|
995
|
+
method: :get,
|
996
|
+
path: "/v2/content",
|
997
|
+
query: "content_format=topic&fields%5B%5D=content_id&fields%5B%5D=locale&locale=all",
|
998
|
+
headers: {
|
999
|
+
"Content-Type" => "application/json",
|
1000
|
+
},
|
1001
|
+
)
|
1002
|
+
.will_respond_with(
|
1003
|
+
status: 200,
|
1004
|
+
body: [
|
1005
|
+
{ content_id: @content_id, locale: "en" },
|
1006
|
+
{ content_id: @content_id, locale: "fr" },
|
1007
|
+
{ content_id: @content_id, locale: "ar" },
|
1008
|
+
]
|
1009
|
+
)
|
1010
|
+
|
1011
|
+
response = @api_client.get_content_items(
|
1012
|
+
content_format: 'topic',
|
1013
|
+
fields: [:content_id, :locale],
|
1014
|
+
locale: 'all',
|
1015
|
+
)
|
1016
|
+
|
1017
|
+
assert_equal 200, response.code
|
1018
|
+
assert_equal [
|
1019
|
+
{ 'content_id' => @content_id, 'locale' => 'en' },
|
1020
|
+
{ 'content_id' => @content_id, 'locale' => 'fr' },
|
1021
|
+
{ 'content_id' => @content_id, 'locale' => 'ar' },
|
1022
|
+
], response.to_a
|
1023
|
+
end
|
928
1024
|
end
|
929
1025
|
|
930
1026
|
describe "#discard_draft(content_id, options = {})" do
|
data/test/router_test.rb
CHANGED
@@ -447,7 +447,7 @@ describe GdsApi::Router do
|
|
447
447
|
|
448
448
|
refute_nil e
|
449
449
|
assert_equal 500, e.code
|
450
|
-
assert_equal "
|
450
|
+
assert_equal "URL: #{@base_api_url}/routes/commit\nResponse body:\nFailed to update all routers\n\nRequest body:\n{}", e.message
|
451
451
|
end
|
452
452
|
end
|
453
453
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gds-api-adapters
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 27.
|
4
|
+
version: 27.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Stewart
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: plek
|