gds-api-adapters 27.0.0 → 27.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|