gds-api-adapters 71.8.0 → 73.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7748e3505408224466ce191efa83ee616ae6bd602f3cec8760fedb09aaaed859
4
- data.tar.gz: c4e7b3e9f9af207d97e5a62e776f6de9dfbea8791e20636e64740e362a8a0457
3
+ metadata.gz: e27eb1087cbf7f61da350a3c09dc2d1c235ed5b6ee6b096ae9ca3c3f25edb2e9
4
+ data.tar.gz: 24af32669af502a68d4085e86be5705e8ff98f6899e50f6b01df1b3b884a2e56
5
5
  SHA512:
6
- metadata.gz: ebd5592b71e1ccea18a2578e52307227689036b8bbd35daf20c7cd0bf7eb67bd85af32fbe8a016e010bdecd1b28e37a4bdeebc3513b9d4f17a0178078828c1db
7
- data.tar.gz: dd41b35ed23b58a7049c5b3327225781a85fa4396f278d3ef064909e453be3b898272504d82beff32c0a06c71e620956d9fa9d0984b04e1be31bd5ed40c00bb5
6
+ metadata.gz: b4b6328db22729d14c8f4f456d8886dd2de5de9d75efd1fbb5f00124f1f067fe520ea5556d67ac32ffd36653598ee9895d029abfcd2ecc3a1ef22c8d8b618574
7
+ data.tar.gz: 9c78e6148f87c00c682222bf1468a32b9e70aa05b7a1163f2aabc2b7d0c050d591a43a80ccf502e6f7c01b695859effc33879ca3ced8dd7f3912eed4a2f75c39
@@ -11,15 +11,13 @@ class GdsApi::AccountApi < GdsApi::Base
11
11
  # Get an OAuth sign-in URL to redirect the user to
12
12
  #
13
13
  # @param [String, nil] redirect_path path on GOV.UK to send the user to after authentication
14
- # @param [String, nil] state_id identifier originally returned by #create_registration_state
15
14
  # @param [String, nil] level_of_authentication either "level1" (require MFA) or "level0" (do not require MFA)
16
15
  #
17
16
  # @return [Hash] An authentication URL and the OAuth state parameter (for CSRF protection)
18
- def get_sign_in_url(redirect_path: nil, state_id: nil, level_of_authentication: nil)
17
+ def get_sign_in_url(redirect_path: nil, level_of_authentication: nil)
19
18
  querystring = nested_query_string(
20
19
  {
21
20
  redirect_path: redirect_path,
22
- state_id: state_id,
23
21
  level_of_authentication: level_of_authentication,
24
22
  }.compact,
25
23
  )
@@ -36,15 +34,6 @@ class GdsApi::AccountApi < GdsApi::Base
36
34
  post_json("#{endpoint}/api/oauth2/callback", code: code, state: state)
37
35
  end
38
36
 
39
- # Register some initial state, to pass to get_sign_in_url, which is used to initialise the account if the user signs up
40
- #
41
- # @param [Hash, nil] attributes Initial attributes to store
42
- #
43
- # @return [Hash] The state ID to pass to get_sign_in_url
44
- def create_registration_state(attributes:)
45
- post_json("#{endpoint}/api/oauth2/state", attributes: attributes)
46
- end
47
-
48
37
  # Get all the information about a user needed to render the account home page
49
38
  #
50
39
  # @param [String] govuk_account_session Value of the session header
@@ -54,6 +43,13 @@ class GdsApi::AccountApi < GdsApi::Base
54
43
  get_json("#{endpoint}/api/user", auth_headers(govuk_account_session))
55
44
  end
56
45
 
46
+ # Delete a users account
47
+ #
48
+ # @param [String] subject_identifier The identifier of the user, shared between the auth service and GOV.UK.
49
+ def delete_user_by_subject_identifier(subject_identifier:)
50
+ delete_json("#{endpoint}/api/oidc-users/#{subject_identifier}")
51
+ end
52
+
57
53
  # Update the user record with privileged information from the auth service. Only the auth service will call this.
58
54
  #
59
55
  # @param [String] subject_identifier The identifier of the user, shared between the auth service and GOV.UK.
@@ -72,25 +68,6 @@ class GdsApi::AccountApi < GdsApi::Base
72
68
  patch_json("#{endpoint}/api/oidc-users/#{subject_identifier}", params)
73
69
  end
74
70
 
75
- # Check if a user has an email subscription for the Transition Checker
76
- #
77
- # @param [String] govuk_account_session Value of the session header
78
- #
79
- # @return [Hash] Whether the user has a subscription, and a new session header
80
- def check_for_email_subscription(govuk_account_session:)
81
- get_json("#{endpoint}/api/transition-checker-email-subscription", auth_headers(govuk_account_session))
82
- end
83
-
84
- # Create or update a user's email subscription for the Transition Checker
85
- #
86
- # @param [String] govuk_account_session Value of the session header
87
- # @param [String] slug The email topic slug
88
- #
89
- # @return [Hash] Whether the user has a subscription, and a new session header
90
- def set_email_subscription(govuk_account_session:, slug:)
91
- post_json("#{endpoint}/api/transition-checker-email-subscription", { slug: slug }, auth_headers(govuk_account_session))
92
- end
93
-
94
71
  # Look up the values of a user's attributes
95
72
  #
96
73
  # @param [String] attributes Names of the attributes to check
@@ -112,17 +89,6 @@ class GdsApi::AccountApi < GdsApi::Base
112
89
  patch_json("#{endpoint}/api/attributes", { attributes: attributes }, auth_headers(govuk_account_session))
113
90
  end
114
91
 
115
- # Look up the names of a user's attributes
116
- #
117
- # @param [String] attributes Names of the attributes to check
118
- # @param [String] govuk_account_session Value of the session header
119
- #
120
- # @return [Hash] The attribute names (if present), and a new session header
121
- def get_attributes_names(attributes:, govuk_account_session:)
122
- querystring = nested_query_string({ attributes: attributes }.compact)
123
- get_json("#{endpoint}/api/attributes/names?#{querystring}", auth_headers(govuk_account_session))
124
- end
125
-
126
92
  # Get the details of an account-linked email subscription.
127
93
  #
128
94
  # @param [String] name Name of the subscription
@@ -3,7 +3,7 @@ module GdsApi
3
3
  class BaseError < StandardError
4
4
  # Give Sentry extra context about this event
5
5
  # https://docs.sentry.io/clients/ruby/context/
6
- def raven_context
6
+ def sentry_context
7
7
  {
8
8
  # Make Sentry group exceptions by type instead of message, so all
9
9
  # exceptions like `GdsApi::TimedOutException` will get grouped as one
@@ -19,8 +19,8 @@ module GdsApi
19
19
  #########################
20
20
  # GET /api/oauth2/sign-in
21
21
  #########################
22
- def stub_account_api_get_sign_in_url(redirect_path: nil, state_id: nil, level_of_authentication: nil, auth_uri: "http://auth/provider", state: "state")
23
- querystring = Rack::Utils.build_nested_query({ redirect_path: redirect_path, state_id: state_id, level_of_authentication: level_of_authentication }.compact)
22
+ def stub_account_api_get_sign_in_url(redirect_path: nil, level_of_authentication: nil, auth_uri: "http://auth/provider", state: "state")
23
+ querystring = Rack::Utils.build_nested_query({ redirect_path: redirect_path, level_of_authentication: level_of_authentication }.compact)
24
24
  stub_request(:get, "#{ACCOUNT_API_ENDPOINT}/api/oauth2/sign-in?#{querystring}")
25
25
  .to_return(
26
26
  status: 200,
@@ -31,12 +31,12 @@ module GdsApi
31
31
  ###########################
32
32
  # POST /api/oauth2/callback
33
33
  ###########################
34
- def stub_account_api_validates_auth_response(code: nil, state: nil, govuk_account_session: "govuk-account-session", redirect_path: "/", ga_client_id: "ga-client-id")
34
+ def stub_account_api_validates_auth_response(code: nil, state: nil, govuk_account_session: "govuk-account-session", redirect_path: "/", ga_client_id: "ga-client-id", cookie_consent: false)
35
35
  stub_request(:post, "#{ACCOUNT_API_ENDPOINT}/api/oauth2/callback")
36
36
  .with(body: hash_including({ code: code, state: state }.compact))
37
37
  .to_return(
38
38
  status: 200,
39
- body: { govuk_account_session: govuk_account_session, redirect_path: redirect_path, ga_client_id: ga_client_id }.to_json,
39
+ body: { govuk_account_session: govuk_account_session, redirect_path: redirect_path, ga_client_id: ga_client_id, cookie_consent: cookie_consent }.to_json,
40
40
  )
41
41
  end
42
42
 
@@ -46,18 +46,6 @@ module GdsApi
46
46
  .to_return(status: 401)
47
47
  end
48
48
 
49
- ########################
50
- # POST /api/oauth2/state
51
- ########################
52
- def stub_account_api_create_registration_state(attributes: nil, state_id: "state-id")
53
- stub_request(:post, "#{ACCOUNT_API_ENDPOINT}/api/oauth2/state")
54
- .with(body: hash_including({ attributes: attributes }.compact))
55
- .to_return(
56
- status: 200,
57
- body: { state_id: state_id }.to_json,
58
- )
59
- end
60
-
61
49
  ###############
62
50
  # GET /api/user
63
51
  ###############
@@ -94,6 +82,26 @@ module GdsApi
94
82
  )
95
83
  end
96
84
 
85
+ ############################################
86
+ # DELETE /api/oidc-users/:subject_identifier
87
+ ############################################
88
+
89
+ def stub_account_api_delete_user_by_subject_identifier(subject_identifier:)
90
+ stub_account_api_request(
91
+ :delete,
92
+ "/api/oidc-users/#{subject_identifier}",
93
+ response_status: 204,
94
+ )
95
+ end
96
+
97
+ def stub_account_api_delete_user_by_subject_identifier_does_not_exist(subject_identifier:)
98
+ stub_account_api_request(
99
+ :delete,
100
+ "/api/oidc-users/#{subject_identifier}",
101
+ response_status: 404,
102
+ )
103
+ end
104
+
97
105
  ###########################################
98
106
  # PATCH /api/oidc-users/:subject_identifier
99
107
  ###########################################
@@ -138,7 +146,7 @@ module GdsApi
138
146
  )
139
147
  end
140
148
 
141
- def stub_account_api_get_email_subscription_unauthorized(name:, **options)
149
+ def stub_account_api_unauthorized_get_email_subscription(name:, **options)
142
150
  stub_account_api_request(
143
151
  :get,
144
152
  "/api/email-subscriptions/#{name}",
@@ -205,79 +213,6 @@ module GdsApi
205
213
  )
206
214
  end
207
215
 
208
- ################################################
209
- # GET /api/transition-checker-email-subscription
210
- ################################################
211
- def stub_account_api_has_email_subscription(**options)
212
- stub_account_api_request(
213
- :get,
214
- "/api/transition-checker-email-subscription",
215
- response_body: { has_subscription: true },
216
- **options,
217
- )
218
- end
219
-
220
- def stub_account_api_does_not_have_email_subscription(**options)
221
- stub_account_api_request(
222
- :get,
223
- "/api/transition-checker-email-subscription",
224
- response_body: { has_subscription: false },
225
- **options,
226
- )
227
- end
228
-
229
- def stub_account_api_unauthorized_get_email_subscription(**options)
230
- stub_account_api_request(
231
- :get,
232
- "/api/transition-checker-email-subscription",
233
- response_status: 401,
234
- **options,
235
- )
236
- end
237
-
238
- def stub_account_api_forbidden_get_email_subscription(needed_level_of_authentication: "level1", **options)
239
- stub_account_api_request(
240
- :get,
241
- "/api/transition-checker-email-subscription",
242
- response_status: 403,
243
- response_body: { needed_level_of_authentication: needed_level_of_authentication },
244
- **options,
245
- )
246
- end
247
-
248
- #################################################
249
- # POST /api/transition-checker-email-subscription
250
- #################################################
251
- def stub_account_api_set_email_subscription(slug: nil, **options)
252
- stub_account_api_request(
253
- :post,
254
- "/api/transition-checker-email-subscription",
255
- with: { body: hash_including({ slug: slug }.compact) },
256
- **options,
257
- )
258
- end
259
-
260
- def stub_account_api_unauthorized_set_email_subscription(slug: nil, **options)
261
- stub_account_api_request(
262
- :post,
263
- "/api/transition-checker-email-subscription",
264
- with: { body: hash_including({ slug: slug }.compact) },
265
- response_status: 401,
266
- **options,
267
- )
268
- end
269
-
270
- def stub_account_api_forbidden_set_email_subscription(slug: nil, needed_level_of_authentication: "level1", **options)
271
- stub_account_api_request(
272
- :post,
273
- "/api/transition-checker-email-subscription",
274
- with: { body: hash_including({ slug: slug }.compact) },
275
- response_status: 403,
276
- response_body: { needed_level_of_authentication: needed_level_of_authentication },
277
- **options,
278
- )
279
- end
280
-
281
216
  #####################
282
217
  # GET /api/attributes
283
218
  #####################
@@ -345,40 +280,6 @@ module GdsApi
345
280
  )
346
281
  end
347
282
 
348
- ###########################
349
- # GET /api/attributes/names
350
- ###########################
351
- def stub_account_api_get_attributes_names(attributes: [], **options)
352
- querystring = Rack::Utils.build_nested_query({ attributes: attributes }.compact)
353
- stub_account_api_request(
354
- :get,
355
- "/api/attributes/names?#{querystring}",
356
- response_body: { values: attributes },
357
- **options,
358
- )
359
- end
360
-
361
- def stub_account_api_unauthorized_get_attributes_names(attributes: [], **options)
362
- querystring = Rack::Utils.build_nested_query({ attributes: attributes }.compact)
363
- stub_account_api_request(
364
- :get,
365
- "/api/attributes/names?#{querystring}",
366
- response_status: 401,
367
- **options,
368
- )
369
- end
370
-
371
- def stub_account_api_forbidden_get_attributes_names(attributes: [], needed_level_of_authentication: "level1", **options)
372
- querystring = Rack::Utils.build_nested_query({ attributes: attributes }.compact)
373
- stub_account_api_request(
374
- :get,
375
- "/api/attributes/names?#{querystring}",
376
- response_status: 403,
377
- response_body: { needed_level_of_authentication: needed_level_of_authentication },
378
- **options,
379
- )
380
- end
381
-
382
283
  ######################
383
284
  # GET /api/saved-pages
384
285
  ######################
@@ -507,7 +408,7 @@ module GdsApi
507
408
  )
508
409
  end
509
410
 
510
- def stub_account_api_delete_saved_page_unauthorised(page_path:, **options)
411
+ def stub_account_api_unauthorized_delete_saved_page(page_path:, **options)
511
412
  stub_account_api_request(
512
413
  :delete,
513
414
  "/api/saved-pages/#{CGI.escape(page_path)}",
@@ -1,3 +1,3 @@
1
1
  module GdsApi
2
- VERSION = "71.8.0".freeze
2
+ VERSION = "73.0.0".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: 71.8.0
4
+ version: 73.0.0
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: 2021-07-02 00:00:00.000000000 Z
11
+ date: 2021-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable