gds-api-adapters 38.1.0 → 39.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/lib/gds_api/test_helpers/need_api.rb +0 -15
  3. data/lib/gds_api/test_helpers/organisations.rb +5 -0
  4. data/lib/gds_api/version.rb +1 -1
  5. metadata +3 -103
  6. data/test/asset_manager_test.rb +0 -94
  7. data/test/business_support_api_test.rb +0 -45
  8. data/test/content_api_test.rb +0 -712
  9. data/test/content_store_test.rb +0 -55
  10. data/test/email_alert_api_test.rb +0 -189
  11. data/test/fixtures/finder_api/cma-case-schema.json +0 -103
  12. data/test/fixtures/hello.txt +0 -1
  13. data/test/fixtures/new_policies_for_dwp.json +0 -298
  14. data/test/fixtures/no_services_and_info_data_found_fixture.json +0 -14
  15. data/test/fixtures/old_policies_for_dwp.json +0 -413
  16. data/test/fixtures/services_and_info_fixture.json +0 -73
  17. data/test/fixtures/sub_sector_organisations.json +0 -57
  18. data/test/fixtures/world_organisations_australia.json +0 -490
  19. data/test/gds_api_base_test.rb +0 -110
  20. data/test/gov_uk_delivery_test.rb +0 -67
  21. data/test/govuk_headers_test.rb +0 -30
  22. data/test/helpers_test.rb +0 -23
  23. data/test/imminence_api_test.rb +0 -196
  24. data/test/json_client_test.rb +0 -879
  25. data/test/licence_application_api_test.rb +0 -196
  26. data/test/list_response_test.rb +0 -189
  27. data/test/local_links_manager_api_test.rb +0 -236
  28. data/test/mapit_test.rb +0 -117
  29. data/test/maslow_test.rb +0 -12
  30. data/test/middleware/govuk_header_sniffer_test.rb +0 -18
  31. data/test/need_api_test.rb +0 -345
  32. data/test/organisations_api_test.rb +0 -58
  33. data/test/panopticon_registerer_test.rb +0 -118
  34. data/test/panopticon_test.rb +0 -190
  35. data/test/pp_data_in_test.rb +0 -52
  36. data/test/pp_data_out_test.rb +0 -24
  37. data/test/publishing_api/special_route_publisher_test.rb +0 -104
  38. data/test/publishing_api_test.rb +0 -186
  39. data/test/publishing_api_v2/get_expanded_links_test.rb +0 -85
  40. data/test/publishing_api_v2/get_links_test.rb +0 -89
  41. data/test/publishing_api_v2/lookup_test.rb +0 -70
  42. data/test/publishing_api_v2_test.rb +0 -1649
  43. data/test/response_test.rb +0 -245
  44. data/test/router_test.rb +0 -456
  45. data/test/rummager_helpers_test.rb +0 -20
  46. data/test/rummager_test.rb +0 -150
  47. data/test/support_api_test.rb +0 -189
  48. data/test/support_test.rb +0 -95
  49. data/test/test_helper.rb +0 -55
  50. data/test/test_helpers/email_alert_api_test.rb +0 -24
  51. data/test/test_helpers/pact_helper.rb +0 -13
  52. data/test/test_helpers/panopticon_test.rb +0 -44
  53. data/test/test_helpers/publishing_api_test.rb +0 -129
  54. data/test/test_helpers/publishing_api_v2_test.rb +0 -170
  55. data/test/worldwide_api_test.rb +0 -82
@@ -1,55 +0,0 @@
1
- # Ensure that in tests, we get a consistent domain back from Plek < 1.0.0
2
- # Without this, content API tests re chunking of requests with long URLs would
3
- # pass/fail in dev/CI.
4
- ENV['RACK_ENV'] = "test"
5
-
6
- require 'bundler'
7
- Bundler.setup :default, :development, :test
8
-
9
- require 'minitest/autorun'
10
- require 'rack/utils'
11
- require 'rack/test'
12
- require 'simplecov'
13
- require 'simplecov-rcov'
14
- require 'mocha/mini_test'
15
- require 'timecop'
16
- require 'gds-api-adapters'
17
-
18
- SimpleCov.start do
19
- add_filter "/test/"
20
- add_group "Test Helpers", "lib/gds_api/test_helpers"
21
- formatter SimpleCov::Formatter::RcovFormatter
22
- end
23
-
24
- class Minitest::Test
25
- def teardown
26
- Timecop.return
27
- end
28
- end
29
-
30
- require 'pact/consumer/minitest'
31
- module PactTest
32
- include Pact::Consumer::Minitest
33
-
34
- def before_suite
35
- # Pact does its own stubbing of network connections, so we want to
36
- # prevent WebMock interfering when pact is being used.
37
- ::WebMock.allow_net_connect!
38
- super
39
- end
40
-
41
- def after_suite
42
- super
43
- ::WebMock.disable_net_connect!
44
- end
45
- end
46
-
47
- def load_fixture_file(filename)
48
- File.open(File.join(File.dirname(__FILE__), "fixtures", filename), encoding: 'utf-8')
49
- end
50
-
51
- require 'webmock/minitest'
52
- WebMock.disable_net_connect!
53
-
54
- require 'gds_api/test_helpers/json_client_helper'
55
- require 'test_helpers/pact_helper'
@@ -1,24 +0,0 @@
1
- require 'test_helper'
2
- require 'gds_api/email_alert_api'
3
- require 'gds_api/test_helpers/email_alert_api'
4
-
5
- describe GdsApi::TestHelpers::EmailAlertApi do
6
- include GdsApi::TestHelpers::EmailAlertApi
7
-
8
- let(:base_api_url) { Plek.current.find("email-alert-api") }
9
- let(:email_alert_api) { GdsApi::EmailAlertApi.new(base_api_url) }
10
-
11
- describe "#assert_email_alert_sent" do
12
- before { stub_any_email_alert_api_call }
13
-
14
- it "matches a post request with any empty attributes by default" do
15
- email_alert_api.send_alert("foo" => "bar")
16
- assert_email_alert_sent
17
- end
18
-
19
- it "matches a post request subset of attributes" do
20
- email_alert_api.send_alert("foo" => "bar", "baz" => "qux")
21
- assert_email_alert_sent("foo" => "bar")
22
- end
23
- end
24
- end
@@ -1,13 +0,0 @@
1
- PUBLISHING_API_PORT = 3001
2
-
3
- def publishing_api_host
4
- "http://localhost:#{PUBLISHING_API_PORT}"
5
- end
6
-
7
- Pact.service_consumer "GDS API Adapters" do
8
- has_pact_with "Publishing API" do
9
- mock_service :publishing_api do
10
- port PUBLISHING_API_PORT
11
- end
12
- end
13
- end
@@ -1,44 +0,0 @@
1
- require 'test_helper'
2
- require 'gds_api/panopticon'
3
- require 'gds_api/test_helpers/panopticon'
4
-
5
- describe GdsApi::TestHelpers::Panopticon do
6
- include GdsApi::TestHelpers::Panopticon
7
-
8
- def assert_stub_exists(*args)
9
- expected_signature = WebMock::RequestSignature.new(*args)
10
-
11
- assert(
12
- WebMock::StubRegistry.instance.registered_request?(expected_signature),
13
- "Stub is not registered:\n\t#{expected_signature}"
14
- )
15
- end
16
-
17
- let(:base_api_endpoint) { GdsApi::TestHelpers::Panopticon::PANOPTICON_ENDPOINT }
18
-
19
- it 'stubs the tag creation request' do
20
- atts = { tag_id: 'foo' }
21
- stub_panopticon_tag_creation(atts)
22
-
23
- assert_stub_exists(:post, "#{base_api_endpoint}/tags.json", body: atts.to_json)
24
- end
25
-
26
- it 'stubs the tag update request' do
27
- atts = { title: 'Foo' }
28
- stub_panopticon_tag_update('section', 'foo/bar', atts)
29
-
30
- assert_stub_exists(:put,
31
- "#{base_api_endpoint}/tags/section/foo/bar.json",
32
- body: atts.to_json
33
- )
34
- end
35
-
36
- it 'stubs the tag publish request' do
37
- stub_panopticon_tag_publish('section', 'foo/bar')
38
-
39
- assert_stub_exists(:post,
40
- "#{base_api_endpoint}/tags/section/foo/bar/publish.json",
41
- body: {}.to_json
42
- )
43
- end
44
- end
@@ -1,129 +0,0 @@
1
- require 'test_helper'
2
- require 'gds_api/publishing_api'
3
- require 'gds_api/test_helpers/publishing_api'
4
-
5
- describe GdsApi::TestHelpers::PublishingApi do
6
- include GdsApi::TestHelpers::PublishingApi
7
- let(:base_api_url) { Plek.current.find("publishing-api") }
8
- let(:publishing_api) { GdsApi::PublishingApi.new(base_api_url) }
9
-
10
- describe '#request_json_matching predicate' do
11
- describe "nested required attribute" do
12
- let(:matcher) { request_json_matching("a" => { "b" => 1 }) }
13
-
14
- it "matches a body with exact same nested hash strucure" do
15
- assert matcher.call(stub("request", body: '{"a": {"b": 1}}'))
16
- end
17
-
18
- it "matches a body with exact same nested hash strucure and an extra attribute at the top level" do
19
- assert matcher.call(stub("request", body: '{"a": {"b": 1}, "c": 3}'))
20
- end
21
-
22
- it "does not match a body where the inner hash has the required attribute and an extra one" do
23
- refute matcher.call(stub("request", body: '{"a": {"b": 1, "c": 2}}'))
24
- end
25
-
26
- it "does not match a body where the inner hash has the required attribute with the wrong value" do
27
- refute matcher.call(stub("request", body: '{"a": {"b": 0}}'))
28
- end
29
-
30
- it "does not match a body where the inner hash lacks the required attribute" do
31
- refute matcher.call(stub("request", body: '{"a": {"c": 1}}'))
32
- end
33
- end
34
-
35
- describe "hash to match uses symbol keys" do
36
- let(:matcher) { request_json_matching(a: 1) }
37
-
38
- it "matches a json body" do
39
- assert matcher.call(stub("request", body: '{"a": 1}'))
40
- end
41
- end
42
- end
43
-
44
- describe '#request_json_including predicate' do
45
- describe "no required attributes" do
46
- let(:matcher) { request_json_including({}) }
47
-
48
- it "matches an empty body" do
49
- assert matcher.call(stub("request", body: "{}"))
50
- end
51
-
52
- it "matches a body with some attributes" do
53
- assert matcher.call(stub("request", body: '{"a": 1}'))
54
- end
55
- end
56
-
57
- describe "one required attribute" do
58
- let(:matcher) { request_json_including("a" => 1) }
59
-
60
- it "does not match an empty body" do
61
- refute matcher.call(stub("request", body: "{}"))
62
- end
63
-
64
- it "does not match a body with the required attribute if the value is different" do
65
- refute matcher.call(stub("request", body: '{"a": 2}'))
66
- end
67
-
68
- it "matches a body with the required attribute and value" do
69
- assert matcher.call(stub("request", body: '{"a": 1}'))
70
- end
71
-
72
- it "matches a body with the required attribute and value and extra attributes" do
73
- assert matcher.call(stub("request", body: '{"a": 1, "b": 2}'))
74
- end
75
- end
76
-
77
- describe "nested required attribute" do
78
- let(:matcher) { request_json_including("a" => { "b" => 1 }) }
79
-
80
- it "matches a body with exact same nested hash strucure" do
81
- assert matcher.call(stub("request", body: '{"a": {"b": 1}}'))
82
- end
83
-
84
- it "matches a body where the inner hash has the required attribute and an extra one" do
85
- assert matcher.call(stub("request", body: '{"a": {"b": 1, "c": 2}}'))
86
- end
87
-
88
- it "does not match a body where the inner hash has the required attribute with the wrong value" do
89
- refute matcher.call(stub("request", body: '{"a": {"b": 0}}'))
90
- end
91
-
92
- it "does not match a body where the inner hash lacks the required attribute" do
93
- refute matcher.call(stub("request", body: '{"a": {"c": 1}}'))
94
- end
95
- end
96
-
97
- describe "hash to match uses symbol keys" do
98
- let(:matcher) { request_json_including(a: { b: 1 }) }
99
-
100
- it "matches a json body" do
101
- assert matcher.call(stub("request", body: '{"a": {"b": 1}}'))
102
- end
103
- end
104
-
105
- describe "nested arrays" do
106
- let(:matcher) { request_json_including("a" => [1]) }
107
-
108
- it "matches a body with exact same inner array" do
109
- assert matcher.call(stub("request", body: '{"a": [1]}'))
110
- end
111
-
112
- it "does not match a body with an array with extra elements" do
113
- refute matcher.call(stub("request", body: '{"a": [1, 2]}'))
114
- end
115
- end
116
-
117
- describe "hashes in nested arrays" do
118
- let(:matcher) { request_json_including("a" => [{ "b" => 1 }, 2]) }
119
-
120
- it "matches a body with exact same inner array" do
121
- assert matcher.call(stub("request", body: '{"a": [{"b": 1}, 2]}'))
122
- end
123
-
124
- it "matches a body with an inner hash with extra elements" do
125
- assert matcher.call(stub("request", body: '{"a": [{"b": 1, "c": 3}, 2]}'))
126
- end
127
- end
128
- end
129
- end
@@ -1,170 +0,0 @@
1
- require 'test_helper'
2
- require 'gds_api/publishing_api_v2'
3
- require 'gds_api/test_helpers/publishing_api_v2'
4
-
5
- describe GdsApi::TestHelpers::PublishingApiV2 do
6
- include GdsApi::TestHelpers::PublishingApiV2
7
- let(:publishing_api) { GdsApi::PublishingApiV2.new(Plek.current.find("publishing-api")) }
8
-
9
- describe '#publishing_api_has_linked_items' do
10
- it "stubs the get linked items api call" do
11
- links = [
12
- { 'content_id' => 'id-1', 'title' => 'title 1', 'link_type' => 'taxons' },
13
- { 'content_id' => 'id-2', 'title' => 'title 2', 'link_type' => 'taxons' },
14
- ]
15
- publishing_api_has_linked_items(
16
- links,
17
- content_id: 'content-id',
18
- link_type: 'taxons',
19
- fields: [:title]
20
- )
21
-
22
- api_response = publishing_api.get_linked_items(
23
- 'content-id',
24
- link_type: 'taxons',
25
- fields: [:title]
26
- )
27
-
28
- assert_equal(
29
- api_response.to_hash,
30
- links
31
- )
32
- end
33
- end
34
-
35
- describe "#publishing_api_has_lookups" do
36
- it "stubs the lookup for content items" do
37
- lookup_hash = { "/foo" => "2878337b-bed9-4e7f-85b6-10ed2cbcd504" }
38
-
39
- publishing_api_has_lookups(lookup_hash)
40
-
41
- assert_equal publishing_api.lookup_content_ids(base_paths: ["/foo"]), lookup_hash
42
- assert_equal publishing_api.lookup_content_id(base_path: "/foo"), "2878337b-bed9-4e7f-85b6-10ed2cbcd504"
43
- end
44
- end
45
-
46
- describe "#publishing_api_has_content" do
47
- it "stubs the call to get content items" do
48
- publishing_api_has_content([{ "content_id" => "2878337b-bed9-4e7f-85b6-10ed2cbcd504" }])
49
-
50
- response = publishing_api.get_content_items({})['results']
51
-
52
- assert_equal([{ "content_id" => "2878337b-bed9-4e7f-85b6-10ed2cbcd504" }], response)
53
- end
54
-
55
- it 'allows params' do
56
- publishing_api_has_content(
57
- [{
58
- "content_id" => "2878337b-bed9-4e7f-85b6-10ed2cbcd504"
59
- }],
60
- document_type: 'document_collection',
61
- query: 'query',
62
- )
63
-
64
- response = publishing_api.get_content_items(
65
- document_type: 'document_collection',
66
- query: 'query'
67
- )['results']
68
-
69
- assert_equal(
70
- [{ "content_id" => "2878337b-bed9-4e7f-85b6-10ed2cbcd504" }],
71
- response
72
- )
73
- end
74
-
75
- it 'returns paginated results' do
76
- content_id_1 = "2878337b-bed9-4e7f-85b6-10ed2cbcd504"
77
- content_id_2 = "2878337b-bed9-4e7f-85b6-10ed2cbcd505"
78
- content_id_3 = "2878337b-bed9-4e7f-85b6-10ed2cbcd506"
79
-
80
- publishing_api_has_content(
81
- [
82
- { "content_id" => content_id_1 },
83
- { "content_id" => content_id_2 },
84
- { "content_id" => content_id_3 },
85
- ],
86
- page: 1,
87
- per_page: 2
88
- )
89
-
90
- response = publishing_api.get_content_items(page: 1, per_page: 2)
91
- records = response['results']
92
-
93
- assert_equal(response['total'], 3)
94
- assert_equal(response['pages'], 2)
95
- assert_equal(response['current_page'], 1)
96
-
97
- assert_equal(records.length, 2)
98
- assert_equal(records.first['content_id'], content_id_1)
99
- assert_equal(records.last['content_id'], content_id_2)
100
- end
101
-
102
- it 'returns an empty list of results for out-of-bound queries' do
103
- content_id_1 = "2878337b-bed9-4e7f-85b6-10ed2cbcd504"
104
- content_id_2 = "2878337b-bed9-4e7f-85b6-10ed2cbcd505"
105
-
106
- publishing_api_has_content(
107
- [
108
- { "content_id" => content_id_1 },
109
- { "content_id" => content_id_2 },
110
- ],
111
- page: 10,
112
- per_page: 2
113
- )
114
-
115
- response = publishing_api.get_content_items(page: 10, per_page: 2)
116
- records = response['results']
117
-
118
- assert_equal(records, [])
119
- end
120
- end
121
-
122
- describe "#publishing_api_has_expanded_links" do
123
- it "stubs the call to get expanded links" do
124
- payload = {
125
- content_id: "2e20294a-d694-4083-985e-d8bedefc2354",
126
- organisations: [
127
- {
128
- content_id: ["a8a09822-1729-48a7-8a68-d08300de9d1e"]
129
- }
130
- ]
131
- }
132
-
133
- publishing_api_has_expanded_links(payload)
134
- response = publishing_api.get_expanded_links("2e20294a-d694-4083-985e-d8bedefc2354")
135
-
136
- assert_equal({
137
- "content_id" => "2e20294a-d694-4083-985e-d8bedefc2354",
138
- "organisations" => [
139
- {
140
- "content_id" => ["a8a09822-1729-48a7-8a68-d08300de9d1e"]
141
- }
142
- ]
143
- }, response.to_h)
144
- end
145
- end
146
-
147
- describe "stub_any_publishing_api_publish" do
148
- it "stubs any publish request to the publishing api" do
149
- stub_any_publishing_api_publish
150
- publishing_api.publish("some-content-id", "major")
151
- assert_publishing_api_publish("some-content-id")
152
- end
153
- end
154
-
155
- describe "stub_any_publishing_api_unpublish" do
156
- it "stubs any unpublish request to the publishing api" do
157
- stub_any_publishing_api_unpublish
158
- publishing_api.unpublish("some-content-id", type: :gone)
159
- assert_publishing_api_unpublish("some-content-id")
160
- end
161
- end
162
-
163
- describe "stub_any_publishing_api_discard_draft" do
164
- it "stubs any discard draft request to the publishing api" do
165
- stub_any_publishing_api_discard_draft
166
- publishing_api.discard_draft("some-content-id")
167
- assert_publishing_api_discard_draft("some-content-id")
168
- end
169
- end
170
- end
@@ -1,82 +0,0 @@
1
- require_relative 'test_helper'
2
- require 'gds_api/worldwide'
3
- require 'gds_api/test_helpers/worldwide'
4
-
5
- describe GdsApi::Worldwide do
6
- include GdsApi::TestHelpers::Worldwide
7
-
8
- before do
9
- @base_api_url = GdsApi::TestHelpers::Worldwide::WORLDWIDE_API_ENDPOINT
10
- @api = GdsApi::Worldwide.new(@base_api_url)
11
- end
12
-
13
- describe "fetching list of world locations" do
14
- it "should get the world locations" do
15
- country_slugs = %w(the-shire rivendel rohan lorien gondor arnor mordor)
16
- worldwide_api_has_locations(country_slugs)
17
-
18
- response = @api.world_locations
19
- assert_equal country_slugs, response.map { |r| r['details']['slug'] }
20
- assert_equal "Rohan", response['results'][2]['title']
21
- end
22
-
23
- it "should handle the pagination" do
24
- country_slugs = (1..50).map { |n| "country-#{n}" }
25
- worldwide_api_has_locations(country_slugs)
26
-
27
- response = @api.world_locations
28
- assert_equal(
29
- country_slugs,
30
- response.with_subsequent_pages.map { |r| r['details']['slug'] }
31
- )
32
- end
33
-
34
- it "should raise error if endpoint 404s" do
35
- stub_request(:get, "#{@base_api_url}/api/world-locations").to_return(status: 404)
36
- assert_raises GdsApi::HTTPNotFound do
37
- @api.world_locations
38
- end
39
- end
40
- end
41
-
42
- describe "fetching a world location" do
43
- it "should return the details" do
44
- worldwide_api_has_location('rohan')
45
-
46
- response = @api.world_location('rohan')
47
- assert_equal 'Rohan', response['title']
48
- end
49
-
50
- it "raises for a non-existent location" do
51
- worldwide_api_does_not_have_location('non-existent')
52
-
53
- assert_raises(GdsApi::HTTPNotFound) do
54
- @api.world_location('non-existent')
55
- end
56
- end
57
- end
58
-
59
- describe "fetching organisations for a location" do
60
- it "should return the organisation details" do
61
- details = JSON.parse(load_fixture_file("world_organisations_australia.json").read)
62
- worldwide_api_has_organisations_for_location('australia', details)
63
-
64
- response = @api.organisations_for_world_location('australia')
65
- assert response.is_a?(GdsApi::ListResponse)
66
- assert_equal(
67
- [
68
- "UK Trade & Investment Australia",
69
- "British High Commission Canberra"
70
- ],
71
- response.map { |item| item['title'] }
72
- )
73
- end
74
-
75
- it "should raise error on 404" do
76
- stub_request(:get, "#{@base_api_url}/api/world-locations/non-existent/organisations").to_return(status: 404)
77
- assert_raises GdsApi::HTTPNotFound do
78
- @api.organisations_for_world_location('non-existent')
79
- end
80
- end
81
- end
82
- end