defra_ruby_mocks 5.2.0 → 5.3.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: 2050966a0416ac33fdb18d7b5e99dddb3548ef4d704792441a7a77a6c664b58e
4
- data.tar.gz: 555e7313d1587a5f83108a5f3ed42de143cb5b0695ab4e11582e883e0fe0e0a3
3
+ metadata.gz: e5df956ffaf0644fb9dae96ae157ec7f45b8121d6bc42e5cd96164de8470342a
4
+ data.tar.gz: 6da12c96f050164e579932bf9ad188866198db203893ab436fc84c0a1e4ceeb8
5
5
  SHA512:
6
- metadata.gz: 6a423e4730a149e0999d21e47b601b0fa83a011b3048c7eb03eebd2534f01752143b3c0f3c273dc6df37191287e6345cb32b1075c7fe745aab415034f6c8b43e
7
- data.tar.gz: 1cb2bc2402d47184315227ba57d31687c1163c0eeacde31b2addd75cdf0e0d41bdbe3710f5c4853a9abbd2d4489a28ccee48f8aeaf4dcaf2beae464b8b4e1696
6
+ metadata.gz: df8d21f730573cdf3d97f10a6e41a4c2d7464e62ac3c5d032190fb6b5b9a21c9bc7a76cce56fadcfb757affd1cb21b1c2b5a6bc8a24c33c1a8db882543ffab14
7
+ data.tar.gz: bed07b31c14573ba390b13294a69f3209538616bd360379d0efb7b6dcc7b57c42406b6b4cc6e1cdc307933851e07c4537f876c0f9f8e80afdc953bdeec10a47d
@@ -25,16 +25,16 @@ module DefraRubyMocks
25
25
 
26
26
  # This schedules a job to send a mock payment webhook.
27
27
  def send_payment_webhook
28
- Rails.logger.warn "[DefraRubyMocks] [send_payment_webhook] " \
29
- "params: #{params[:govpay_id]}, status #{params[:payment_status]}"
28
+ Rails.logger.warn "[DefraRubyMocks] [send_payment_webhook] #{params.slice(:govpay_payment_id,
29
+ :govpay_payment_payment_status)}"
30
30
 
31
- %w[govpay_id payment_status callback_url signing_secret].each do |p|
31
+ %w[govpay_payment_id govpay_payment_status callback_url signing_secret].each do |p|
32
32
  raise StandardError, "Missing parameter: '#{p}'" unless params[p].present?
33
33
  end
34
34
 
35
35
  SendPaymentWebhookJob.perform_later(
36
- govpay_id: params[:govpay_id],
37
- status: params[:payment_status],
36
+ govpay_payment_id: params[:govpay_payment_id],
37
+ govpay_payment_status: params[:govpay_payment_status],
38
38
  callback_url: params[:callback_url],
39
39
  signing_secret: params[:signing_secret]
40
40
  )
@@ -44,16 +44,17 @@ module DefraRubyMocks
44
44
 
45
45
  # This schedules a job to send a mock refund webhook.
46
46
  def send_refund_webhook
47
- Rails.logger.warn "[DefraRubyMocks] [send_refund webhook] " \
48
- "params: #{params[:govpay_id]}, status #{params[:refund_status]}"
47
+ Rails.logger.warn "[DefraRubyMocks] [send_refund webhook] #{params.slice(:govpay_refund_id, :govpay_payment_id,
48
+ :govpay_refund_status)}"
49
49
 
50
- %w[govpay_id refund_status callback_url signing_secret].each do |p|
50
+ %w[govpay_payment_id govpay_refund_id govpay_refund_status callback_url signing_secret].each do |p|
51
51
  raise StandardError, "Missing parameter: '#{p}'" unless params[p].present?
52
52
  end
53
53
 
54
54
  SendRefundWebhookJob.perform_later(
55
- govpay_id: params[:govpay_id],
56
- status: params[:refund_status],
55
+ govpay_payment_id: params[:govpay_payment_id],
56
+ govpay_refund_id: params[:govpay_refund_id],
57
+ govpay_refund_status: params[:govpay_refund_status],
57
58
  callback_url: params[:callback_url],
58
59
  signing_secret: params[:signing_secret]
59
60
  )
@@ -1,15 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class BaseSendWebhookJob < ApplicationJob
4
- def perform(govpay_id:, status:, callback_url:, signing_secret:)
5
- body = webhook_body(govpay_id:, status:)
6
- Rails.logger.warn "[DefraRubyMocks] [BaseSendWebhookJob] sending #{webhook_type} webhook " \
7
- "for #{govpay_id}, status \"#{status}\" to #{callback_url}"
4
+ attr_accessor :govpay_payment_id, :callback_url, :signing_secret
5
+
6
+ def post_callback
7
+ body = webhook_body
8
+
8
9
  RestClient::Request.execute(
9
10
  method: :post,
10
11
  url: callback_url,
11
- payload: body.to_json,
12
- headers: { "Pay-Signature": webhook_signature(body, signing_secret) }
12
+ headers: { "Pay-Signature": webhook_signature(body, signing_secret) },
13
+ payload: body.to_json
13
14
  )
14
15
  rescue StandardError => e
15
16
  Rails.logger.error "[DefraRubyMocks] [BaseSendWebhookJob] error sending " \
@@ -22,7 +23,7 @@ class BaseSendWebhookJob < ApplicationJob
22
23
  raise NotImplementedError
23
24
  end
24
25
 
25
- def webhook_body(govpay_id:, status:)
26
+ def webhook_body
26
27
  raise NotImplementedError
27
28
  end
28
29
 
@@ -1,6 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class SendPaymentWebhookJob < BaseSendWebhookJob
4
+ attr_accessor :govpay_payment_status
5
+
6
+ def perform(govpay_payment_id:, govpay_payment_status:, callback_url:, signing_secret:)
7
+ @govpay_payment_id = govpay_payment_id
8
+ @govpay_payment_status = govpay_payment_status
9
+ @callback_url = callback_url
10
+ @signing_secret = signing_secret
11
+
12
+ Rails.logger.warn "[DefraRubyMocks] [SendPaymentWebhookJob] sending #{webhook_type} webhook " \
13
+ "for #{govpay_payment_id}, status \"#{govpay_payment_status}\" to #{callback_url}"
14
+
15
+ post_callback
16
+ end
4
17
 
5
18
  private
6
19
 
@@ -8,11 +21,11 @@ class SendPaymentWebhookJob < BaseSendWebhookJob
8
21
  "payment"
9
22
  end
10
23
 
11
- def webhook_body(govpay_id:, status:)
24
+ def webhook_body
12
25
  webhook_body ||= JSON.parse(File.read("lib/fixtures/files/govpay/webhook_payment_update_body.json"))
13
26
 
14
- webhook_body["resource"]["payment_id"] = govpay_id
15
- webhook_body["resource"]["state"]["status"] = status
27
+ webhook_body["resource"]["payment_id"] = govpay_payment_id
28
+ webhook_body["resource"]["state"]["status"] = govpay_payment_status
16
29
 
17
30
  webhook_body
18
31
  end
@@ -1,6 +1,21 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class SendRefundWebhookJob < BaseSendWebhookJob
4
+ attr_accessor :govpay_refund_id, :govpay_refund_status
5
+
6
+ def perform(govpay_payment_id:, govpay_refund_id:, govpay_refund_status:, callback_url:, signing_secret:)
7
+ @govpay_payment_id = govpay_payment_id
8
+ @govpay_refund_status = govpay_refund_status
9
+ @govpay_refund_id = govpay_refund_id
10
+ @callback_url = callback_url
11
+ @signing_secret = signing_secret
12
+
13
+ Rails.logger.warn "[DefraRubyMocks] [SendRefundWebhookJob] sending #{webhook_type} webhook " \
14
+ "for payment #{govpay_payment_id}, refund #{govpay_refund_id}, status " \
15
+ "\"#{govpay_refund_status}\" to #{callback_url}"
16
+
17
+ post_callback
18
+ end
4
19
 
5
20
  private
6
21
 
@@ -8,11 +23,12 @@ class SendRefundWebhookJob < BaseSendWebhookJob
8
23
  "refund"
9
24
  end
10
25
 
11
- def webhook_body(govpay_id:, status:)
26
+ def webhook_body
12
27
  webhook_body ||= JSON.parse(File.read("lib/fixtures/files/govpay/webhook_refund_update_body.json"))
13
28
 
14
- webhook_body["refund_id"] = govpay_id
15
- webhook_body["status"] = status
29
+ webhook_body["refund_id"] = govpay_refund_id
30
+ webhook_body["payment_id"] = govpay_payment_id
31
+ webhook_body["status"] = govpay_refund_status
16
32
 
17
33
  webhook_body
18
34
  end
data/config/routes.rb CHANGED
@@ -47,12 +47,12 @@ DefraRubyMocks::Engine.routes.draw do # rubocop:disable Metrics/BlockLength
47
47
  as: "govpay_set_test_refund_response_status",
48
48
  constraints: ->(_request) { DefraRubyMocks.configuration.enabled? }
49
49
 
50
- post "/govpay/v1/payments/:govpay_id/send_payment_webhook",
50
+ post "/govpay/v1/payments/send_payment_webhook",
51
51
  to: "govpay_test_helpers#send_payment_webhook",
52
52
  as: "send_payment_webhook",
53
53
  constraints: ->(_request) { DefraRubyMocks.configuration.enabled? }
54
54
 
55
- post "/govpay/v1/payments/:govpay_id/send_refund_webhook",
55
+ post "/govpay/v1/payments/send_refund_webhook",
56
56
  to: "govpay_test_helpers#send_refund_webhook",
57
57
  as: "send_refund_webhook",
58
58
  constraints: ->(_request) { DefraRubyMocks.configuration.enabled? }
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DefraRubyMocks
4
- VERSION = "5.2.0"
4
+ VERSION = "5.3.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: defra_ruby_mocks
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.2.0
4
+ version: 5.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Defra
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-06-11 00:00:00.000000000 Z
11
+ date: 2025-08-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails