gds-api-adapters 80.0.1 → 81.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d176cb409b66bc4df5c376c244660cd23fe992e70fa982b3d3403638a97855e4
4
- data.tar.gz: 507564fc5d9cde9f3bcb9d20ef056a273dd1ff6f7f79a7e4631141cd46ed92bb
3
+ metadata.gz: a24005bab2921edb7aa53883b108f6e41d924fad73427f83a36e8533e7812d04
4
+ data.tar.gz: f31d0c3901757454cc2cb2bc9a25f37bf75478d49f1897df0f49d7b9618d0100
5
5
  SHA512:
6
- metadata.gz: 18f2478cee5688ec61a3c55b4f010b6bc1dd663929b8313b17affbc4056f78825e008a448242c30668a4acd0cd6fbbc118df4eb691bfa913f5aba76461cbe017
7
- data.tar.gz: 3ecfd09796febbb411404015894024df599b2edb733a0658d730057f5c90e9a60926fa1bfd73a9c258db0a6e24282c41e9d548ba7a04b161f1d39550f827b10b
6
+ metadata.gz: dab28218b95c40c9220630b17aef48d0a97d9c6d20a436a2006114e23269cf3932f152becd2735f539a812cfa698b39b54da9ba707ccb475014164a12a16f6e7
7
+ data.tar.gz: 5df20ac4342d9ba55ef43c8e83731d78f24205a96c48f05803d84cc8ea7d04c33886c67547d5f8dd06804f4c55665f3192cb30be367063d9af77c851c2898e54
data/README.md CHANGED
@@ -82,6 +82,34 @@ There are also test helpers for stubbing various requests in other apps.
82
82
 
83
83
  See [all the test helpers in lib/gds_api/test_helpers](/lib/gds_api/test_helpers).
84
84
 
85
+
86
+ ## Pact Verification During CI
87
+
88
+ During the CI test suite, Jenkins downloads and runs the pact:verify tasks for
89
+ each provider app. It's run directly on the Jenkins machine rather than in
90
+ docker containers for each app. For this reason the email-alert-api app
91
+ requires a specific setup on the CI machine - on db creation it copies the
92
+ database from the template1 db (this is the usual PG behaviour, but for some
93
+ reason rails needs to be told to do this explicitly). This template1 db has
94
+ to have the uuid-ossp extension installed by superuser, because the jenkins
95
+ user that CI runs under cannot create this extension. If this test stops
96
+ working with errors like:
97
+
98
+ ```
99
+ Caused by:
100
+ PG::InsufficientPrivilege: ERROR: permission denied to create extension "uuid-ossp"
101
+ HINT: Must be superuser to create this extension.
102
+ ```
103
+
104
+ ...the template may have been deleted or changed. Log in to the relevant CI
105
+ agent and run:
106
+
107
+ `> sudo -u postgres psql -d template1`
108
+
109
+ Then at the PSQL command line:
110
+
111
+ `template1=# CREATE EXTENSION IF NOT EXISTS "uuid-ossp";`
112
+
85
113
  ## Licence
86
114
 
87
115
  Released under the MIT Licence, a copy of which can be found in the file
@@ -6,8 +6,18 @@ class GdsApi::LocalLinksManager < GdsApi::Base
6
6
  get_json(url)
7
7
  end
8
8
 
9
+ def local_link_by_custodian_code(local_custodian_code, lgsl, lgil)
10
+ url = "#{endpoint}/api/link?local_custodian_code=#{local_custodian_code}&lgsl=#{lgsl}&lgil=#{lgil}"
11
+ get_json(url)
12
+ end
13
+
9
14
  def local_authority(authority_slug)
10
15
  url = "#{endpoint}/api/local-authority?authority_slug=#{authority_slug}"
11
16
  get_json(url)
12
17
  end
18
+
19
+ def local_authority_by_custodian_code(local_custodian_code)
20
+ url = "#{endpoint}/api/local-authority?local_custodian_code=#{local_custodian_code}"
21
+ get_json(url)
22
+ end
13
23
  end
@@ -595,6 +595,12 @@ module GdsApi
595
595
  url = "#{EMAIL_ALERT_API_ENDPOINT}/subscriber-lists"
596
596
  query ? "#{url}?#{query}" : url
597
597
  end
598
+
599
+ # Find and return the subscriber list for a topic if one exists.
600
+ def email_alert_api_has_subscriber_list_for_topic(content_id:, list: {})
601
+ url = "#{EMAIL_ALERT_API_ENDPOINT}/subscriber-lists?links%5Btopics%5D%5B0%5D=#{content_id}"
602
+ stub_request(:get, url).to_return(status: 200, body: { "subscriber_list" => list }.to_json)
603
+ end
598
604
  end
599
605
  end
600
606
  end
@@ -5,7 +5,7 @@ module GdsApi
5
5
  module LocalLinksManager
6
6
  LOCAL_LINKS_MANAGER_ENDPOINT = Plek.current.find("local-links-manager")
7
7
 
8
- def stub_local_links_manager_has_a_link(authority_slug:, lgsl:, lgil:, url:, country_name: "England", status: "ok")
8
+ def stub_local_links_manager_has_a_link(authority_slug:, lgsl:, lgil:, url:, country_name: "England", status: "ok", local_custodian_code: nil)
9
9
  response = {
10
10
  "local_authority" => {
11
11
  "name" => authority_slug.capitalize,
@@ -13,6 +13,7 @@ module GdsApi
13
13
  "tier" => "unitary",
14
14
  "homepage_url" => "http://#{authority_slug}.example.com",
15
15
  "country_name" => country_name,
16
+ "slug" => authority_slug,
16
17
  },
17
18
  "local_interaction" => {
18
19
  "lgsl_code" => lgsl,
@@ -25,9 +26,15 @@ module GdsApi
25
26
  stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/link")
26
27
  .with(query: { authority_slug: authority_slug, lgsl: lgsl, lgil: lgil })
27
28
  .to_return(body: response.to_json, status: 200)
29
+
30
+ unless local_custodian_code.nil?
31
+ stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/link")
32
+ .with(query: { local_custodian_code: local_custodian_code, lgsl: lgsl, lgil: lgil })
33
+ .to_return(body: response.to_json, status: 200)
34
+ end
28
35
  end
29
36
 
30
- def stub_local_links_manager_has_no_link(authority_slug:, lgsl:, lgil:, country_name: "England")
37
+ def stub_local_links_manager_has_no_link(authority_slug:, lgsl:, lgil:, country_name: "England", local_custodian_code: nil)
31
38
  response = {
32
39
  "local_authority" => {
33
40
  "name" => authority_slug.capitalize,
@@ -35,15 +42,22 @@ module GdsApi
35
42
  "tier" => "unitary",
36
43
  "homepage_url" => "http://#{authority_slug}.example.com",
37
44
  "country_name" => country_name,
45
+ "slug" => authority_slug,
38
46
  },
39
47
  }
40
48
 
41
49
  stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/link")
42
50
  .with(query: { authority_slug: authority_slug, lgsl: lgsl, lgil: lgil })
43
51
  .to_return(body: response.to_json, status: 200)
52
+
53
+ unless local_custodian_code.nil?
54
+ stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/link")
55
+ .with(query: { local_custodian_code: local_custodian_code, lgsl: lgsl, lgil: lgil })
56
+ .to_return(body: response.to_json, status: 200)
57
+ end
44
58
  end
45
59
 
46
- def stub_local_links_manager_has_no_link_and_no_homepage_url(authority_slug:, lgsl:, lgil:, country_name: "England")
60
+ def stub_local_links_manager_has_no_link_and_no_homepage_url(authority_slug:, lgsl:, lgil:, country_name: "England", local_custodian_code: nil)
47
61
  response = {
48
62
  "local_authority" => {
49
63
  "name" => authority_slug.capitalize,
@@ -51,43 +65,48 @@ module GdsApi
51
65
  "tier" => "unitary",
52
66
  "homepage_url" => nil,
53
67
  "country_name" => country_name,
68
+ "slug" => authority_slug,
54
69
  },
55
70
  }
56
71
 
57
72
  stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/link")
58
73
  .with(query: { authority_slug: authority_slug, lgsl: lgsl, lgil: lgil })
59
74
  .to_return(body: response.to_json, status: 200)
60
- end
61
75
 
62
- def stub_local_links_manager_request_with_missing_parameters(authority_slug, lgsl, lgil)
63
- # convert nil to an empty string, otherwise query param is not expressed correctly
64
- params = {
65
- authority_slug: authority_slug || "",
66
- lgsl: lgsl || "",
67
- lgil: lgil || "",
68
- }
76
+ unless local_custodian_code.nil?
77
+ stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/link")
78
+ .with(query: { local_custodian_code: local_custodian_code, lgsl: lgsl, lgil: lgil })
79
+ .to_return(body: response.to_json, status: 200)
80
+ end
81
+ end
69
82
 
83
+ def stub_local_links_manager_request_with_missing_parameters(**parameters)
70
84
  stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/link")
71
- .with(query: params)
85
+ .with(query: convert_to_query_string_params(parameters))
72
86
  .to_return(body: {}.to_json, status: 400)
73
87
  end
74
88
 
75
- def stub_local_links_manager_does_not_have_required_objects(authority_slug, lgsl, lgil)
76
- params = { authority_slug: authority_slug, lgsl: lgsl, lgil: lgil }
77
-
89
+ def stub_local_links_manager_request_with_invalid_parameters(**parameters)
78
90
  stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/link")
79
- .with(query: params)
91
+ .with(query: convert_to_query_string_params(parameters))
80
92
  .to_return(body: {}.to_json, status: 404)
81
93
  end
82
94
 
83
- def stub_local_links_manager_has_a_local_authority(authority_slug)
95
+ def convert_to_query_string_params(parameters)
96
+ # convert nil to an empty string, otherwise query param is not expressed correctly
97
+ parameters.each { |key, _value| parameters[key] = "" if parameters[key].nil? }
98
+ parameters
99
+ end
100
+
101
+ def stub_local_links_manager_has_a_local_authority(authority_slug, country_name: "England", local_custodian_code: nil)
84
102
  response = {
85
103
  "local_authorities" => [
86
104
  {
87
105
  "name" => authority_slug.capitalize,
88
106
  "homepage_url" => "http://#{authority_slug}.example.com",
89
- "country_name" => "England",
107
+ "country_name" => country_name,
90
108
  "tier" => "unitary",
109
+ "slug" => authority_slug,
91
110
  },
92
111
  ],
93
112
  }
@@ -95,9 +114,15 @@ module GdsApi
95
114
  stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/local-authority")
96
115
  .with(query: { authority_slug: authority_slug })
97
116
  .to_return(body: response.to_json, status: 200)
117
+
118
+ unless local_custodian_code.nil?
119
+ stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/local-authority")
120
+ .with(query: { local_custodian_code: local_custodian_code })
121
+ .to_return(body: response.to_json, status: 200)
122
+ end
98
123
  end
99
124
 
100
- def stub_local_links_manager_has_a_district_and_county_local_authority(district_slug, county_slug)
125
+ def stub_local_links_manager_has_a_district_and_county_local_authority(district_slug, county_slug, local_custodian_code: nil)
101
126
  response = {
102
127
  "local_authorities" => [
103
128
  {
@@ -105,12 +130,14 @@ module GdsApi
105
130
  "homepage_url" => "http://#{district_slug}.example.com",
106
131
  "country_name" => "England",
107
132
  "tier" => "district",
133
+ "slug" => district_slug,
108
134
  },
109
135
  {
110
136
  "name" => county_slug.capitalize,
111
137
  "homepage_url" => "http://#{county_slug}.example.com",
112
138
  "country_name" => "England",
113
139
  "tier" => "county",
140
+ "slug" => county_slug,
114
141
  },
115
142
  ],
116
143
  }
@@ -118,6 +145,12 @@ module GdsApi
118
145
  stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/local-authority")
119
146
  .with(query: { authority_slug: district_slug })
120
147
  .to_return(body: response.to_json, status: 200)
148
+
149
+ unless local_custodian_code.nil?
150
+ stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/local-authority")
151
+ .with(query: { local_custodian_code: local_custodian_code })
152
+ .to_return(body: response.to_json, status: 200)
153
+ end
121
154
  end
122
155
 
123
156
  def stub_local_links_manager_request_without_local_authority_slug
@@ -126,20 +159,33 @@ module GdsApi
126
159
  .to_return(body: {}.to_json, status: 400)
127
160
  end
128
161
 
162
+ def stub_local_links_manager_request_without_local_custodian_code
163
+ stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/local-authority")
164
+ .with(query: { local_custodian_code: "" })
165
+ .to_return(body: {}.to_json, status: 400)
166
+ end
167
+
129
168
  def stub_local_links_manager_does_not_have_an_authority(authority_slug)
130
169
  stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/local-authority")
131
170
  .with(query: { authority_slug: authority_slug })
132
171
  .to_return(body: {}.to_json, status: 404)
133
172
  end
134
173
 
135
- def stub_local_links_manager_has_a_local_authority_without_homepage(authority_slug)
174
+ def stub_local_links_manager_does_not_have_a_custodian_code(local_custodian_code)
175
+ stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/local-authority")
176
+ .with(query: { local_custodian_code: local_custodian_code })
177
+ .to_return(body: {}.to_json, status: 404)
178
+ end
179
+
180
+ def stub_local_links_manager_has_a_local_authority_without_homepage(authority_slug, country_name: "England", local_custodian_code: nil)
136
181
  response = {
137
182
  "local_authorities" => [
138
183
  {
139
184
  "name" => authority_slug.capitalize,
140
185
  "homepage_url" => "",
141
- "country_name" => "England",
186
+ "country_name" => country_name,
142
187
  "tier" => "unitary",
188
+ "slug" => authority_slug,
143
189
  },
144
190
  ],
145
191
  }
@@ -147,6 +193,12 @@ module GdsApi
147
193
  stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/local-authority")
148
194
  .with(query: { authority_slug: authority_slug })
149
195
  .to_return(body: response.to_json, status: 200)
196
+
197
+ unless local_custodian_code.nil?
198
+ stub_request(:get, "#{LOCAL_LINKS_MANAGER_ENDPOINT}/api/local-authority")
199
+ .with(query: { local_custodian_code: local_custodian_code })
200
+ .to_return(body: response.to_json, status: 200)
201
+ end
150
202
  end
151
203
  end
152
204
  end
@@ -1,3 +1,3 @@
1
1
  module GdsApi
2
- VERSION = "80.0.1".freeze
2
+ VERSION = "81.0.2".freeze
3
3
  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: 80.0.1
4
+ version: 81.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - GOV.UK Dev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-29 00:00:00.000000000 Z
11
+ date: 2022-07-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -440,14 +440,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
440
440
  requirements:
441
441
  - - ">="
442
442
  - !ruby/object:Gem::Version
443
- version: 2.6.0
443
+ version: 2.7.0
444
444
  required_rubygems_version: !ruby/object:Gem::Requirement
445
445
  requirements:
446
446
  - - ">="
447
447
  - !ruby/object:Gem::Version
448
448
  version: '0'
449
449
  requirements: []
450
- rubygems_version: 3.0.3
450
+ rubygems_version: 3.1.6
451
451
  signing_key:
452
452
  specification_version: 4
453
453
  summary: Adapters to work with GDS APIs