gds-api-adapters 71.1.0 → 71.6.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: 9324b0ac6cf23eff191016dbb952b2cc4507d1071a6d7d8e463ce389f1e38024
4
- data.tar.gz: d5b157159178227c69d0d724f49f10e299937c7c855c9cc5b55019d9995e17f2
3
+ metadata.gz: ecea9412cb0ad1e32c5b4eac37fd53699b06e7b9612a7033eb23f989e1a013d2
4
+ data.tar.gz: 311fc8a8a2dc36fc389dd7d0166943dfab092690d5e1ea504b9395fd44a5f2b6
5
5
  SHA512:
6
- metadata.gz: b24b9dec516dfbd48713c6bee798e1d4579def436e284077f89f649f3ec3dbd0fc88a3b59270c07f3d51f4e972058d6521168d571e263e037de785b4e48af9b7
7
- data.tar.gz: 37dd29babe5be2b2f11d9fc26ea2d5b3d8e9414779b3d226f6282d533ad57ea9aed10cce07ee2725109ef30885e4707aec4d9c70e7ff818572f644a390bc3ce5
6
+ metadata.gz: 255c6879512abcd1c8383d1f4b24799bc408ce04cce55e1cfd1db7365e5e17189d196fa26917283ff411c93b568c824fda237ea683bc9d5d6e56e397c43aaa54
7
+ data.tar.gz: 1bc48d079cba0ee202697442fd3646718100df7c5e870ff5c17b38ca32802a11fd4f833f424d12dcf6270a98d3be7fd9a067525c0432dc986c771448be91053c
@@ -45,6 +45,33 @@ class GdsApi::AccountApi < GdsApi::Base
45
45
  post_json("#{endpoint}/api/oauth2/state", attributes: attributes)
46
46
  end
47
47
 
48
+ # Get all the information about a user needed to render the account home page
49
+ #
50
+ # @param [String] govuk_account_session Value of the session header
51
+ #
52
+ # @return [Hash] Information about the user and the services they've used, and a new session header
53
+ def get_user(govuk_account_session:)
54
+ get_json("#{endpoint}/api/user", auth_headers(govuk_account_session))
55
+ end
56
+
57
+ # Update the user record with privileged information from the auth service. Only the auth service will call this.
58
+ #
59
+ # @param [String] subject_identifier The identifier of the user, shared between the auth service and GOV.UK.
60
+ # @param [String, nil] email The user's current
61
+ # @param [Boolean, nil] email_verified Whether the user's current email address is verified
62
+ # @param [Boolean, nil] has_unconfirmed_email Whether the user has a new, pending, email address
63
+ #
64
+ # @return [Hash] The user's subject identifier and email attributes
65
+ def update_user_by_subject_identifier(subject_identifier:, email: nil, email_verified: nil, has_unconfirmed_email: nil)
66
+ params = {
67
+ email: email,
68
+ email_verified: email_verified,
69
+ has_unconfirmed_email: has_unconfirmed_email,
70
+ }.compact
71
+
72
+ patch_json("#{endpoint}/api/oidc-users/#{subject_identifier}", params)
73
+ end
74
+
48
75
  # Check if a user has an email subscription for the Transition Checker
49
76
  #
50
77
  # @param [String] govuk_account_session Value of the session header
@@ -96,6 +123,75 @@ class GdsApi::AccountApi < GdsApi::Base
96
123
  get_json("#{endpoint}/api/attributes/names?#{querystring}", auth_headers(govuk_account_session))
97
124
  end
98
125
 
126
+ # Get the details of an account-linked email subscription.
127
+ #
128
+ # @param [String] name Name of the subscription
129
+ # @param [String] govuk_account_session Value of the session header
130
+ #
131
+ # @return [Hash] Details of the subscription, if it exists.
132
+ def get_email_subscription(name:, govuk_account_session:)
133
+ get_json("#{endpoint}/api/email-subscriptions/#{CGI.escape(name)}", auth_headers(govuk_account_session))
134
+ end
135
+
136
+ # Create or update an account-linked email subscription.
137
+ #
138
+ # @param [String] name Name of the subscription
139
+ # @param [String] topic_slug The email-alert-api topic slug to subscribe to
140
+ # @param [String] govuk_account_session Value of the session header
141
+ #
142
+ # @return [Hash] Details of the newly created subscription.
143
+ def put_email_subscription(name:, topic_slug:, govuk_account_session:)
144
+ put_json("#{endpoint}/api/email-subscriptions/#{CGI.escape(name)}", { topic_slug: topic_slug }, auth_headers(govuk_account_session))
145
+ end
146
+
147
+ # Unsubscribe and delete an account-linked email subscription.
148
+ #
149
+ # @param [String] name Name of the subscription
150
+ # @param [String] govuk_account_session Value of the session header
151
+ def delete_email_subscription(name:, govuk_account_session:)
152
+ delete_json("#{endpoint}/api/email-subscriptions/#{CGI.escape(name)}", {}, auth_headers(govuk_account_session))
153
+ end
154
+
155
+ # Look up all pages saved by a user in their Account
156
+ #
157
+ # @param [String] govuk_account_session Value of the session header
158
+ #
159
+ # @return [Hash] containing :saved_pages, an array of single saved page hashes
160
+ def get_saved_pages(govuk_account_session:)
161
+ get_json("#{endpoint}/api/saved-pages", auth_headers(govuk_account_session))
162
+ end
163
+
164
+ # Return a single page by unique URL
165
+ #
166
+ # @param [String] the path of a page to check
167
+ # @param [String] govuk_account_session Value of the session header
168
+ #
169
+ # @return [Hash] containing :saved_page, a hash of a single saved page value
170
+ def get_saved_page(page_path:, govuk_account_session:)
171
+ get_json("#{endpoint}/api/saved-pages/#{CGI.escape(page_path)}", auth_headers(govuk_account_session))
172
+ end
173
+
174
+ # Upsert a single saved page entry in a users account
175
+ #
176
+ # @param [String] the path of a page to check
177
+ # @param [String] govuk_account_session Value of the session header
178
+ #
179
+ # @return [Hash] A single saved page value (if sucessful)
180
+ def save_page(page_path:, govuk_account_session:)
181
+ put_json("#{endpoint}/api/saved-pages/#{CGI.escape(page_path)}", {}, auth_headers(govuk_account_session))
182
+ end
183
+
184
+ # Delete a single saved page entry from a users account
185
+ #
186
+ # @param [String] the path of a page to check
187
+ # @param [String] govuk_account_session Value of the session header
188
+ #
189
+ # @return [GdsApi::Response] A status code of 204 indicates the saved page has been successfully deleted.
190
+ # A status code of 404 indicates there is no saved page with this path.
191
+ def delete_saved_page(page_path:, govuk_account_session:)
192
+ delete_json("#{endpoint}/api/saved-pages/#{CGI.escape(page_path)}", {}, auth_headers(govuk_account_session))
193
+ end
194
+
99
195
  private
100
196
 
101
197
  def nested_query_string(params)
@@ -176,6 +176,18 @@ class GdsApi::EmailAlertApi < GdsApi::Base
176
176
  )
177
177
  end
178
178
 
179
+ # Verify a GOV.UK Account-holder has a corresponding subscriber
180
+ #
181
+ # @param [string] govuk_account_session The request's session identifier
182
+ #
183
+ # @return [Hash] subscriber
184
+ def authenticate_subscriber_by_govuk_account(govuk_account_session:)
185
+ post_json(
186
+ "#{endpoint}/subscribers/govuk-account",
187
+ govuk_account_session: govuk_account_session,
188
+ )
189
+ end
190
+
179
191
  # Verify a subscriber has control of a provided email
180
192
  #
181
193
  # @param [string] address Address to send verification email to
@@ -180,10 +180,10 @@ module GdsApi
180
180
  raise GdsApi::EndpointNotFound, "Could not connect to #{url}"
181
181
  rescue RestClient::Exceptions::Timeout => e
182
182
  logger.error loggable.merge(status: "timeout", error_message: e.message, error_class: e.class.name, end_time: Time.now.to_f).to_json
183
- raise GdsApi::TimedOutException
183
+ raise GdsApi::TimedOutException, e.message
184
184
  rescue URI::InvalidURIError => e
185
185
  logger.error loggable.merge(status: "invalid_uri", error_message: e.message, error_class: e.class.name, end_time: Time.now.to_f).to_json
186
- raise GdsApi::InvalidUrl
186
+ raise GdsApi::InvalidUrl, e.message
187
187
  rescue RestClient::Exception => e
188
188
  # Log the error here, since we have access to loggable, but raise the
189
189
  # exception up to the calling method to deal with
@@ -192,10 +192,10 @@ module GdsApi
192
192
  raise
193
193
  rescue Errno::ECONNRESET => e
194
194
  logger.error loggable.merge(status: "connection_reset", error_message: e.message, error_class: e.class.name, end_time: Time.now.to_f).to_json
195
- raise GdsApi::TimedOutException
195
+ raise GdsApi::TimedOutException, e.message
196
196
  rescue SocketError => e
197
197
  logger.error loggable.merge(status: "socket_error", error_message: e.message, error_class: e.class.name, end_time: Time.now.to_f).to_json
198
- raise GdsApi::SocketErrorException
198
+ raise GdsApi::SocketErrorException, e.message
199
199
  end
200
200
  end
201
201
  end
@@ -5,6 +5,20 @@ module GdsApi
5
5
  module AccountApi
6
6
  ACCOUNT_API_ENDPOINT = Plek.find("account-api")
7
7
 
8
+ def stub_account_api_request(method, path, with: {}, response_status: 200, response_body: {}, govuk_account_session: nil, new_govuk_account_session: nil)
9
+ with.merge!(headers: { GdsApi::AccountApi::AUTH_HEADER_NAME => govuk_account_session }) if govuk_account_session
10
+ new_govuk_account_session = nil if response_status >= 400
11
+ to_return = { status: response_status, body: response_body.merge(govuk_account_session: new_govuk_account_session).compact.to_json }
12
+ if with.empty?
13
+ stub_request(method, "#{ACCOUNT_API_ENDPOINT}#{path}").to_return(**to_return)
14
+ else
15
+ stub_request(method, "#{ACCOUNT_API_ENDPOINT}#{path}").with(**with).to_return(**to_return)
16
+ end
17
+ end
18
+
19
+ #########################
20
+ # GET /api/oauth2/sign-in
21
+ #########################
8
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")
9
23
  querystring = Rack::Utils.build_nested_query({ redirect_path: redirect_path, state_id: state_id, level_of_authentication: level_of_authentication }.compact)
10
24
  stub_request(:get, "#{ACCOUNT_API_ENDPOINT}/api/oauth2/sign-in?#{querystring}")
@@ -14,6 +28,9 @@ module GdsApi
14
28
  )
15
29
  end
16
30
 
31
+ ###########################
32
+ # POST /api/oauth2/callback
33
+ ###########################
17
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")
18
35
  stub_request(:post, "#{ACCOUNT_API_ENDPOINT}/api/oauth2/callback")
19
36
  .with(body: hash_including({ code: code, state: state }.compact))
@@ -29,6 +46,9 @@ module GdsApi
29
46
  .to_return(status: 401)
30
47
  end
31
48
 
49
+ ########################
50
+ # POST /api/oauth2/state
51
+ ########################
32
52
  def stub_account_api_create_registration_state(attributes: nil, state_id: "state-id")
33
53
  stub_request(:post, "#{ACCOUNT_API_ENDPOINT}/api/oauth2/state")
34
54
  .with(body: hash_including({ attributes: attributes }.compact))
@@ -38,6 +58,155 @@ module GdsApi
38
58
  )
39
59
  end
40
60
 
61
+ ###############
62
+ # GET /api/user
63
+ ###############
64
+ def stub_account_api_user_info(level_of_authentication: "level0", email: "email@example.com", email_verified: true, has_unconfirmed_email: false, services: {}, **options)
65
+ stub_account_api_request(
66
+ :get,
67
+ "/api/user",
68
+ response_body: {
69
+ level_of_authentication: level_of_authentication,
70
+ email: email,
71
+ email_verified: email_verified,
72
+ has_unconfirmed_email: has_unconfirmed_email,
73
+ services: services,
74
+ },
75
+ **options,
76
+ )
77
+ end
78
+
79
+ def stub_account_api_user_info_service_state(service:, service_state: "yes", **options)
80
+ stub_account_api_user_info(
81
+ **options.merge(
82
+ services: options.fetch(:services, {}).merge(service => service_state),
83
+ ),
84
+ )
85
+ end
86
+
87
+ def stub_account_api_unauthorized_user_info(**options)
88
+ stub_account_api_request(
89
+ :get,
90
+ "/api/user",
91
+ response_status: 401,
92
+ **options,
93
+ )
94
+ end
95
+
96
+ ###########################################
97
+ # PATCH /api/oidc-users/:subject_identifier
98
+ ###########################################
99
+ 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)
100
+ stub_account_api_request(
101
+ :patch,
102
+ "/api/oidc-users/#{subject_identifier}",
103
+ with: { body: hash_including({ email: email, email_verified: email_verified, has_unconfirmed_email: has_unconfirmed_email }.compact) },
104
+ response_body: {
105
+ sub: subject_identifier,
106
+ email: email || old_email,
107
+ email_verified: email_verified || old_email_verified,
108
+ has_unconfirmed_email: has_unconfirmed_email || old_has_unconfirmed_email,
109
+ },
110
+ )
111
+ end
112
+
113
+ ####################################
114
+ # GET /api/email-subscriptions/:name
115
+ ####################################
116
+ def stub_account_api_get_email_subscription(name:, topic_slug: "slug", email_alert_api_subscription_id: "12345", **options)
117
+ stub_account_api_request(
118
+ :get,
119
+ "/api/email-subscriptions/#{name}",
120
+ response_body: {
121
+ email_subscription: {
122
+ name: name,
123
+ topic_slug: topic_slug,
124
+ email_alert_api_subscription_id: email_alert_api_subscription_id,
125
+ },
126
+ },
127
+ **options,
128
+ )
129
+ end
130
+
131
+ def stub_account_api_get_email_subscription_does_not_exist(name:, **options)
132
+ stub_account_api_request(
133
+ :get,
134
+ "/api/email-subscriptions/#{name}",
135
+ response_status: 404,
136
+ **options,
137
+ )
138
+ end
139
+
140
+ def stub_account_api_get_email_subscription_unauthorized(name:, **options)
141
+ stub_account_api_request(
142
+ :get,
143
+ "/api/email-subscriptions/#{name}",
144
+ response_status: 401,
145
+ **options,
146
+ )
147
+ end
148
+
149
+ ####################################
150
+ # PUT /api/email-subscriptions/:name
151
+ ####################################
152
+ def stub_account_api_put_email_subscription(name:, topic_slug: nil, **options)
153
+ stub_account_api_request(
154
+ :put,
155
+ "/api/email-subscriptions/#{name}",
156
+ with: { body: hash_including({ topic_slug: topic_slug }.compact) },
157
+ response_body: {
158
+ email_subscription: {
159
+ name: name,
160
+ topic_slug: topic_slug || "slug",
161
+ },
162
+ },
163
+ **options,
164
+ )
165
+ end
166
+
167
+ def stub_account_api_unauthorized_put_email_subscription(name:, topic_slug: nil, **options)
168
+ stub_account_api_request(
169
+ :put,
170
+ "/api/email-subscriptions/#{name}",
171
+ with: { body: hash_including({ topic_slug: topic_slug }.compact) },
172
+ response_status: 401,
173
+ **options,
174
+ )
175
+ end
176
+
177
+ #######################################
178
+ # DELETE /api/email-subscriptions/:name
179
+ #######################################
180
+ def stub_account_api_delete_email_subscription(name:, **options)
181
+ stub_account_api_request(
182
+ :delete,
183
+ "/api/email-subscriptions/#{name}",
184
+ response_status: 204,
185
+ **options,
186
+ )
187
+ end
188
+
189
+ def stub_account_api_delete_email_subscription_does_not_exist(name:, **options)
190
+ stub_account_api_request(
191
+ :delete,
192
+ "/api/email-subscriptions/#{name}",
193
+ response_status: 404,
194
+ **options,
195
+ )
196
+ end
197
+
198
+ def stub_account_api_unauthorized_delete_email_subscription(name:, **options)
199
+ stub_account_api_request(
200
+ :delete,
201
+ "/api/email-subscriptions/#{name}",
202
+ response_status: 401,
203
+ **options,
204
+ )
205
+ end
206
+
207
+ ################################################
208
+ # GET /api/transition-checker-email-subscription
209
+ ################################################
41
210
  def stub_account_api_has_email_subscription(**options)
42
211
  stub_account_api_request(
43
212
  :get,
@@ -75,6 +244,9 @@ module GdsApi
75
244
  )
76
245
  end
77
246
 
247
+ #################################################
248
+ # POST /api/transition-checker-email-subscription
249
+ #################################################
78
250
  def stub_account_api_set_email_subscription(slug: nil, **options)
79
251
  stub_account_api_request(
80
252
  :post,
@@ -105,6 +277,9 @@ module GdsApi
105
277
  )
106
278
  end
107
279
 
280
+ #####################
281
+ # GET /api/attributes
282
+ #####################
108
283
  def stub_account_api_has_attributes(attributes: [], values: {}, **options)
109
284
  querystring = Rack::Utils.build_nested_query({ attributes: attributes }.compact)
110
285
  stub_account_api_request(
@@ -136,6 +311,9 @@ module GdsApi
136
311
  )
137
312
  end
138
313
 
314
+ #######################
315
+ # PATCH /api/attributes
316
+ #######################
139
317
  def stub_account_api_set_attributes(attributes: nil, **options)
140
318
  stub_account_api_request(
141
319
  :patch,
@@ -166,6 +344,9 @@ module GdsApi
166
344
  )
167
345
  end
168
346
 
347
+ ###########################
348
+ # GET /api/attributes/names
349
+ ###########################
169
350
  def stub_account_api_get_attributes_names(attributes: [], **options)
170
351
  querystring = Rack::Utils.build_nested_query({ attributes: attributes }.compact)
171
352
  stub_account_api_request(
@@ -197,15 +378,141 @@ module GdsApi
197
378
  )
198
379
  end
199
380
 
200
- def stub_account_api_request(method, path, with: {}, response_status: 200, response_body: {}, govuk_account_session: nil, new_govuk_account_session: nil)
201
- with.merge!(headers: { GdsApi::AccountApi::AUTH_HEADER_NAME => govuk_account_session }) if govuk_account_session
202
- new_govuk_account_session = nil if response_status >= 400
203
- to_return = { status: response_status, body: response_body.merge(govuk_account_session: new_govuk_account_session).compact.to_json }
204
- if with.empty?
205
- stub_request(method, "#{ACCOUNT_API_ENDPOINT}#{path}").to_return(**to_return)
206
- else
207
- stub_request(method, "#{ACCOUNT_API_ENDPOINT}#{path}").with(**with).to_return(**to_return)
208
- end
381
+ ######################
382
+ # GET /api/saved-pages
383
+ ######################
384
+ def stub_account_api_returning_saved_pages(saved_pages: [], **options)
385
+ stub_account_api_request(
386
+ :get,
387
+ "/api/saved-pages",
388
+ response_body: { saved_pages: saved_pages },
389
+ **options,
390
+ )
391
+ end
392
+
393
+ def stub_account_api_unauthorized_get_saved_pages(**options)
394
+ stub_account_api_request(
395
+ :get,
396
+ "/api/saved-pages",
397
+ response_status: 401,
398
+ **options,
399
+ )
400
+ end
401
+
402
+ #################################
403
+ # GET /api/saved_pages/:page_path
404
+ #################################
405
+ def stub_account_api_get_saved_page(page_path:, content_id: "46163ed2-1777-4ee6-bdd4-6a2007e49d8f", title: "Ministry of Magic", **options)
406
+ stub_account_api_request(
407
+ :get,
408
+ "/api/saved-pages/#{CGI.escape(page_path)}",
409
+ response_body: {
410
+ saved_page: {
411
+ page_path: page_path,
412
+ content_id: content_id,
413
+ title: title,
414
+ },
415
+ },
416
+ **options,
417
+ )
418
+ end
419
+
420
+ def stub_account_api_does_not_have_saved_page(page_path:, **options)
421
+ stub_account_api_request(
422
+ :get,
423
+ "/api/saved-pages/#{CGI.escape(page_path)}",
424
+ response_status: 404,
425
+ **options,
426
+ )
427
+ end
428
+
429
+ def stub_account_api_unauthorized_get_saved_page(page_path:, **options)
430
+ stub_account_api_request(
431
+ :get,
432
+ "/api/saved-pages/#{CGI.escape(page_path)}",
433
+ response_status: 401,
434
+ **options,
435
+ )
436
+ end
437
+
438
+ #################################
439
+ # PUT /api/saved-pages/:page_path
440
+ #################################
441
+ def stub_account_api_save_page(page_path:, content_id: "c840bfa2-011a-42cc-ac7a-a6da990aff0b", title: "Ministry of Magic", **options)
442
+ stub_account_api_request(
443
+ :put,
444
+ "/api/saved-pages/#{CGI.escape(page_path)}",
445
+ response_body: {
446
+ saved_page: {
447
+ page_path: page_path,
448
+ content_id: content_id,
449
+ title: title,
450
+ },
451
+ },
452
+ **options,
453
+ )
454
+ end
455
+
456
+ def stub_account_api_save_page_already_exists(page_path:, **options)
457
+ stub_account_api_save_page(page_path: page_path, **options)
458
+ end
459
+
460
+ def stub_account_api_save_page_cannot_save_page(page_path:, **options)
461
+ stub_account_api_request(
462
+ :put,
463
+ "/api/saved-pages/#{CGI.escape(page_path)}",
464
+ response_status: 422,
465
+ response_body: cannot_save_page_problem_detail({ page_path: page_path }),
466
+ **options,
467
+ )
468
+ end
469
+
470
+ def stub_account_api_unauthorized_save_page(page_path:, **options)
471
+ stub_account_api_request(
472
+ :put,
473
+ "/api/saved-pages/#{CGI.escape(page_path)}",
474
+ response_status: 401,
475
+ **options,
476
+ )
477
+ end
478
+
479
+ def cannot_save_page_problem_detail(option = {})
480
+ {
481
+ title: "Cannot save page",
482
+ detail: "Cannot save page with path #{option['page_path']}, check it is not blank, and is a well formatted url path.",
483
+ type: "https://github.com/alphagov/account-api/blob/main/docs/api.md#cannot-save-page",
484
+ **option,
485
+ }
486
+ end
487
+
488
+ ####################################
489
+ # DELETE /api/saved-pages/:page_path
490
+ ####################################
491
+ def stub_account_api_delete_saved_page(page_path:, **options)
492
+ stub_account_api_request(
493
+ :delete,
494
+ "/api/saved-pages/#{CGI.escape(page_path)}",
495
+ response_status: 204,
496
+ **options,
497
+ )
498
+ end
499
+
500
+ def stub_account_api_delete_saved_page_does_not_exist(page_path:, **options)
501
+ stub_account_api_request(
502
+ :delete,
503
+ "/api/saved-pages/#{CGI.escape(page_path)}",
504
+ response_status: 404,
505
+ **options,
506
+ )
507
+ end
508
+
509
+ def stub_account_api_delete_saved_page_unauthorised(page_path:, **options)
510
+ stub_account_api_request(
511
+ :delete,
512
+ "/api/saved-pages/#{CGI.escape(page_path)}",
513
+ response_status: 401,
514
+ **options,
515
+ )
209
516
  end
210
517
  end
211
518
  end
@@ -283,6 +283,51 @@ module GdsApi
283
283
  .to_return(status: 404)
284
284
  end
285
285
 
286
+ def stub_email_alert_api_authenticate_subscriber_by_govuk_account(govuk_account_session, subscriber_id, address, new_govuk_account_session: nil)
287
+ stub_request(:post, "#{EMAIL_ALERT_API_ENDPOINT}/subscribers/govuk-account")
288
+ .with(
289
+ body: { govuk_account_session: govuk_account_session }.to_json,
290
+ ).to_return(
291
+ status: 200,
292
+ body: {
293
+ govuk_account_session: new_govuk_account_session,
294
+ }.compact.merge(get_subscriber_response(subscriber_id, address)).to_json,
295
+ )
296
+ end
297
+
298
+ def stub_email_alert_api_authenticate_subscriber_by_govuk_account_session_invalid(govuk_account_session)
299
+ stub_request(:post, "#{EMAIL_ALERT_API_ENDPOINT}/subscribers/govuk-account")
300
+ .with(
301
+ body: { govuk_account_session: govuk_account_session }.to_json,
302
+ ).to_return(
303
+ status: 401,
304
+ )
305
+ end
306
+
307
+ def stub_email_alert_api_authenticate_subscriber_by_govuk_account_email_unverified(govuk_account_session, new_govuk_account_session: nil)
308
+ stub_request(:post, "#{EMAIL_ALERT_API_ENDPOINT}/subscribers/govuk-account")
309
+ .with(
310
+ body: { govuk_account_session: govuk_account_session }.to_json,
311
+ ).to_return(
312
+ status: 403,
313
+ body: {
314
+ govuk_account_session: new_govuk_account_session,
315
+ }.compact.to_json,
316
+ )
317
+ end
318
+
319
+ def stub_email_alert_api_authenticate_subscriber_by_govuk_account_no_subscriber(govuk_account_session, new_govuk_account_session: nil)
320
+ stub_request(:post, "#{EMAIL_ALERT_API_ENDPOINT}/subscribers/govuk-account")
321
+ .with(
322
+ body: { govuk_account_session: govuk_account_session }.to_json,
323
+ ).to_return(
324
+ status: 404,
325
+ body: {
326
+ govuk_account_session: new_govuk_account_session,
327
+ }.compact.to_json,
328
+ )
329
+ end
330
+
286
331
  def assert_unsubscribed(uuid)
287
332
  assert_requested(:post, "#{EMAIL_ALERT_API_ENDPOINT}/unsubscribe/#{uuid}", times: 1)
288
333
  end
@@ -1,3 +1,3 @@
1
1
  module GdsApi
2
- VERSION = "71.1.0".freeze
2
+ VERSION = "71.6.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.1.0
4
+ version: 71.6.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-05-06 00:00:00.000000000 Z
11
+ date: 2021-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -445,7 +445,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
445
445
  - !ruby/object:Gem::Version
446
446
  version: '0'
447
447
  requirements: []
448
- rubygems_version: 3.1.4
448
+ rubygems_version: 3.0.3
449
449
  signing_key:
450
450
  specification_version: 4
451
451
  summary: Adapters to work with GDS APIs