gds-api-adapters 73.1.0 → 75.2.0

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: d35a5a4781f1983405b899ebeba4aecbf9d91728a9f82e7ac0a2b75b6c937181
4
- data.tar.gz: 33c37300639794ce84a6afbf35d142afc572b1e17a67e60e1204c7b8d51b8b6a
3
+ metadata.gz: ed853f2f02ea63fdb7b79c7ef4460076b88cc32d1b3c4f6841ba5ced95d9e22e
4
+ data.tar.gz: 72bc43ca960d3efece046f7faac4c3369fcaf27a4e9611ef6ca4ebcac4081a9b
5
5
  SHA512:
6
- metadata.gz: 86c6188ed9f79fa7b5d8d0426e49453c864b9f4f1c8260f2e25291ad6266de37c869a22ec5298a9c57913f8d4a7141aac8c184cf6b2a1c5eed5ac040b895b608
7
- data.tar.gz: 6361bff544285f8b60dfa099120b0e6b0ffea107dcf592c5ef151d337bd48458354ccfa52528d231cebd6a52211e4cdc0168135ff4e2d41819520e338367368e
6
+ metadata.gz: 9ceb5f3b05c87b631691e4221ebdd7fdeeb349fa2b4a213c8407e3af113bbcaac47e6e0e41b8f31ee4370bc59c726d212d397a3a808d9fe0c692f750ea00c215
7
+ data.tar.gz: d53218eba5ead7910b50e20d8dcb33787c3056e1cdd77bc92c33cb1a60eeeb15c4101e0bf4e9828fdfa32703f99d9bef5c36a67891ed0f6bc0ef175d150cc7ad
@@ -11,14 +11,14 @@ 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] level_of_authentication either "level1" (require MFA) or "level0" (do not require MFA)
14
+ # @param [Boolean, nil] mfa whether to authenticate the user with MFA or not
15
15
  #
16
16
  # @return [Hash] An authentication URL and the OAuth state parameter (for CSRF protection)
17
- def get_sign_in_url(redirect_path: nil, level_of_authentication: nil)
17
+ def get_sign_in_url(redirect_path: nil, mfa: false)
18
18
  querystring = nested_query_string(
19
19
  {
20
20
  redirect_path: redirect_path,
21
- level_of_authentication: level_of_authentication,
21
+ mfa: mfa,
22
22
  }.compact,
23
23
  )
24
24
  get_json("#{endpoint}/api/oauth2/sign-in?#{querystring}")
@@ -65,13 +65,17 @@ class GdsApi::AccountApi < GdsApi::Base
65
65
  # @param [String, nil] email The user's current
66
66
  # @param [Boolean, nil] email_verified Whether the user's current email address is verified
67
67
  # @param [Boolean, nil] has_unconfirmed_email Whether the user has a new, pending, email address
68
+ # @param [Boolean, nil] cookie_consent Whether the user has consented to analytics cookies
69
+ # @param [Boolean, nil] feedback_consent Whether the user has consented to being contacted for feedback
68
70
  #
69
71
  # @return [Hash] The user's subject identifier and email attributes
70
- def update_user_by_subject_identifier(subject_identifier:, email: nil, email_verified: nil, has_unconfirmed_email: nil)
72
+ def update_user_by_subject_identifier(subject_identifier:, email: nil, email_verified: nil, has_unconfirmed_email: nil, cookie_consent: nil, feedback_consent: nil)
71
73
  params = {
72
74
  email: email,
73
75
  email_verified: email_verified,
74
76
  has_unconfirmed_email: has_unconfirmed_email,
77
+ cookie_consent: cookie_consent,
78
+ feedback_consent: feedback_consent,
75
79
  }.compact
76
80
 
77
81
  patch_json("#{endpoint}/api/oidc-users/#{subject_identifier}", params)
@@ -127,46 +131,6 @@ class GdsApi::AccountApi < GdsApi::Base
127
131
  delete_json("#{endpoint}/api/email-subscriptions/#{CGI.escape(name)}", {}, auth_headers(govuk_account_session))
128
132
  end
129
133
 
130
- # Look up all pages saved by a user in their Account
131
- #
132
- # @param [String] govuk_account_session Value of the session header
133
- #
134
- # @return [Hash] containing :saved_pages, an array of single saved page hashes
135
- def get_saved_pages(govuk_account_session:)
136
- get_json("#{endpoint}/api/saved-pages", auth_headers(govuk_account_session))
137
- end
138
-
139
- # Return a single page by unique URL
140
- #
141
- # @param [String] the path of a page to check
142
- # @param [String] govuk_account_session Value of the session header
143
- #
144
- # @return [Hash] containing :saved_page, a hash of a single saved page value
145
- def get_saved_page(page_path:, govuk_account_session:)
146
- get_json("#{endpoint}/api/saved-pages/#{CGI.escape(page_path)}", auth_headers(govuk_account_session))
147
- end
148
-
149
- # Upsert a single saved page entry in a users account
150
- #
151
- # @param [String] the path of a page to check
152
- # @param [String] govuk_account_session Value of the session header
153
- #
154
- # @return [Hash] A single saved page value (if sucessful)
155
- def save_page(page_path:, govuk_account_session:)
156
- put_json("#{endpoint}/api/saved-pages/#{CGI.escape(page_path)}", {}, auth_headers(govuk_account_session))
157
- end
158
-
159
- # Delete a single saved page entry from a users account
160
- #
161
- # @param [String] the path of a page to check
162
- # @param [String] govuk_account_session Value of the session header
163
- #
164
- # @return [GdsApi::Response] A status code of 204 indicates the saved page has been successfully deleted.
165
- # A status code of 404 indicates there is no saved page with this path.
166
- def delete_saved_page(page_path:, govuk_account_session:)
167
- delete_json("#{endpoint}/api/saved-pages/#{CGI.escape(page_path)}", {}, auth_headers(govuk_account_session))
168
- end
169
-
170
134
  private
171
135
 
172
136
  def nested_query_string(params)
@@ -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, 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)
22
+ def stub_account_api_get_sign_in_url(redirect_path: nil, mfa: false, auth_uri: "http://auth/provider", state: "state")
23
+ querystring = Rack::Utils.build_nested_query({ redirect_path: redirect_path, mfa: mfa }.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", cookie_consent: false)
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, feedback_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, cookie_consent: cookie_consent }.to_json,
39
+ body: { govuk_account_session: govuk_account_session, redirect_path: redirect_path, ga_client_id: ga_client_id, cookie_consent: cookie_consent, feedback_consent: feedback_consent }.to_json,
40
40
  )
41
41
  end
42
42
 
@@ -69,13 +69,13 @@ module GdsApi
69
69
  ###############
70
70
  # GET /api/user
71
71
  ###############
72
- def stub_account_api_user_info(id: "user-id", level_of_authentication: "level0", email: "email@example.com", email_verified: true, has_unconfirmed_email: false, services: {}, **options)
72
+ def stub_account_api_user_info(id: "user-id", mfa: false, email: "email@example.com", email_verified: true, has_unconfirmed_email: false, services: {}, **options)
73
73
  stub_account_api_request(
74
74
  :get,
75
75
  "/api/user",
76
76
  response_body: {
77
77
  id: id,
78
- level_of_authentication: level_of_authentication,
78
+ mfa: mfa,
79
79
  email: email,
80
80
  email_verified: email_verified,
81
81
  has_unconfirmed_email: has_unconfirmed_email,
@@ -125,16 +125,18 @@ module GdsApi
125
125
  ###########################################
126
126
  # PATCH /api/oidc-users/:subject_identifier
127
127
  ###########################################
128
- def stub_update_user_by_subject_identifier(subject_identifier:, email: nil, email_verified: nil, has_unconfirmed_email: nil, old_email: nil, old_email_verified: nil, old_has_unconfirmed_email: nil)
128
+ def stub_update_user_by_subject_identifier(subject_identifier:, email: nil, email_verified: nil, has_unconfirmed_email: nil, cookie_consent: nil, feedback_consent: nil, old_email: nil, old_email_verified: nil, old_has_unconfirmed_email: nil, old_cookie_consent: nil, old_feedback_consent: nil)
129
129
  stub_account_api_request(
130
130
  :patch,
131
131
  "/api/oidc-users/#{subject_identifier}",
132
- with: { body: hash_including({ email: email, email_verified: email_verified, has_unconfirmed_email: has_unconfirmed_email }.compact) },
132
+ with: { body: hash_including({ email: email, email_verified: email_verified, has_unconfirmed_email: has_unconfirmed_email, cookie_consent: cookie_consent, feedback_consent: feedback_consent }.compact) },
133
133
  response_body: {
134
134
  sub: subject_identifier,
135
135
  email: email || old_email,
136
136
  email_verified: email_verified || old_email_verified,
137
137
  has_unconfirmed_email: has_unconfirmed_email || old_has_unconfirmed_email,
138
+ cookie_consent: cookie_consent || old_cookie_consent,
139
+ feedback_consent: feedback_consent || old_feedback_consent,
138
140
  },
139
141
  )
140
142
  end
@@ -256,13 +258,12 @@ module GdsApi
256
258
  )
257
259
  end
258
260
 
259
- def stub_account_api_forbidden_has_attributes(attributes: [], needed_level_of_authentication: "level1", **options)
261
+ def stub_account_api_forbidden_has_attributes(attributes: [], **options)
260
262
  querystring = Rack::Utils.build_nested_query({ attributes: attributes }.compact)
261
263
  stub_account_api_request(
262
264
  :get,
263
265
  "/api/attributes?#{querystring}",
264
266
  response_status: 403,
265
- response_body: { needed_level_of_authentication: needed_level_of_authentication },
266
267
  **options,
267
268
  )
268
269
  end
@@ -289,150 +290,12 @@ module GdsApi
289
290
  )
290
291
  end
291
292
 
292
- def stub_account_api_forbidden_set_attributes(attributes: nil, needed_level_of_authentication: "level1", **options)
293
+ def stub_account_api_forbidden_set_attributes(attributes: nil, **options)
293
294
  stub_account_api_request(
294
295
  :patch,
295
296
  "/api/attributes",
296
297
  with: { body: hash_including({ attributes: attributes }.compact) },
297
298
  response_status: 403,
298
- response_body: { needed_level_of_authentication: needed_level_of_authentication },
299
- **options,
300
- )
301
- end
302
-
303
- ######################
304
- # GET /api/saved-pages
305
- ######################
306
- def stub_account_api_returning_saved_pages(saved_pages: [], **options)
307
- stub_account_api_request(
308
- :get,
309
- "/api/saved-pages",
310
- response_body: { saved_pages: saved_pages },
311
- **options,
312
- )
313
- end
314
-
315
- def stub_account_api_unauthorized_get_saved_pages(**options)
316
- stub_account_api_request(
317
- :get,
318
- "/api/saved-pages",
319
- response_status: 401,
320
- **options,
321
- )
322
- end
323
-
324
- #################################
325
- # GET /api/saved_pages/:page_path
326
- #################################
327
- def stub_account_api_get_saved_page(page_path:, content_id: "46163ed2-1777-4ee6-bdd4-6a2007e49d8f", title: "Ministry of Magic", **options)
328
- stub_account_api_request(
329
- :get,
330
- "/api/saved-pages/#{CGI.escape(page_path)}",
331
- response_body: {
332
- saved_page: {
333
- page_path: page_path,
334
- content_id: content_id,
335
- title: title,
336
- },
337
- },
338
- **options,
339
- )
340
- end
341
-
342
- def stub_account_api_does_not_have_saved_page(page_path:, **options)
343
- stub_account_api_request(
344
- :get,
345
- "/api/saved-pages/#{CGI.escape(page_path)}",
346
- response_status: 404,
347
- **options,
348
- )
349
- end
350
-
351
- def stub_account_api_unauthorized_get_saved_page(page_path:, **options)
352
- stub_account_api_request(
353
- :get,
354
- "/api/saved-pages/#{CGI.escape(page_path)}",
355
- response_status: 401,
356
- **options,
357
- )
358
- end
359
-
360
- #################################
361
- # PUT /api/saved-pages/:page_path
362
- #################################
363
- def stub_account_api_save_page(page_path:, content_id: "c840bfa2-011a-42cc-ac7a-a6da990aff0b", title: "Ministry of Magic", **options)
364
- stub_account_api_request(
365
- :put,
366
- "/api/saved-pages/#{CGI.escape(page_path)}",
367
- response_body: {
368
- saved_page: {
369
- page_path: page_path,
370
- content_id: content_id,
371
- title: title,
372
- },
373
- },
374
- **options,
375
- )
376
- end
377
-
378
- def stub_account_api_save_page_already_exists(page_path:, **options)
379
- stub_account_api_save_page(page_path: page_path, **options)
380
- end
381
-
382
- def stub_account_api_save_page_cannot_save_page(page_path:, **options)
383
- stub_account_api_request(
384
- :put,
385
- "/api/saved-pages/#{CGI.escape(page_path)}",
386
- response_status: 422,
387
- response_body: cannot_save_page_problem_detail({ page_path: page_path }),
388
- **options,
389
- )
390
- end
391
-
392
- def stub_account_api_unauthorized_save_page(page_path:, **options)
393
- stub_account_api_request(
394
- :put,
395
- "/api/saved-pages/#{CGI.escape(page_path)}",
396
- response_status: 401,
397
- **options,
398
- )
399
- end
400
-
401
- def cannot_save_page_problem_detail(option = {})
402
- {
403
- title: "Cannot save page",
404
- detail: "Cannot save page with path #{option['page_path']}, check it is not blank, and is a well formatted url path.",
405
- type: "https://github.com/alphagov/account-api/blob/main/docs/api.md#cannot-save-page",
406
- **option,
407
- }
408
- end
409
-
410
- ####################################
411
- # DELETE /api/saved-pages/:page_path
412
- ####################################
413
- def stub_account_api_delete_saved_page(page_path:, **options)
414
- stub_account_api_request(
415
- :delete,
416
- "/api/saved-pages/#{CGI.escape(page_path)}",
417
- response_status: 204,
418
- **options,
419
- )
420
- end
421
-
422
- def stub_account_api_delete_saved_page_does_not_exist(page_path:, **options)
423
- stub_account_api_request(
424
- :delete,
425
- "/api/saved-pages/#{CGI.escape(page_path)}",
426
- response_status: 404,
427
- **options,
428
- )
429
- end
430
-
431
- def stub_account_api_unauthorized_delete_saved_page(page_path:, **options)
432
- stub_account_api_request(
433
- :delete,
434
- "/api/saved-pages/#{CGI.escape(page_path)}",
435
- response_status: 401,
436
299
  **options,
437
300
  )
438
301
  end
@@ -1,3 +1,3 @@
1
1
  module GdsApi
2
- VERSION = "73.1.0".freeze
2
+ VERSION = "75.2.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: 73.1.0
4
+ version: 75.2.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-09-08 00:00:00.000000000 Z
11
+ date: 2021-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable