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 +4 -4
- data/app/controllers/defra_ruby_mocks/govpay_test_helpers_controller.rb +11 -10
- data/app/jobs/base_send_webhook_job.rb +8 -7
- data/app/jobs/send_payment_webhook_job.rb +16 -3
- data/app/jobs/send_refund_webhook_job.rb +19 -3
- data/config/routes.rb +2 -2
- data/lib/defra_ruby_mocks/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e5df956ffaf0644fb9dae96ae157ec7f45b8121d6bc42e5cd96164de8470342a
|
4
|
+
data.tar.gz: 6da12c96f050164e579932bf9ad188866198db203893ab436fc84c0a1e4ceeb8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
28
|
+
Rails.logger.warn "[DefraRubyMocks] [send_payment_webhook] #{params.slice(:govpay_payment_id,
|
29
|
+
:govpay_payment_payment_status)}"
|
30
30
|
|
31
|
-
%w[
|
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
|
-
|
37
|
-
|
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
|
-
|
47
|
+
Rails.logger.warn "[DefraRubyMocks] [send_refund webhook] #{params.slice(:govpay_refund_id, :govpay_payment_id,
|
48
|
+
:govpay_refund_status)}"
|
49
49
|
|
50
|
-
%w[
|
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
|
-
|
56
|
-
|
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
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
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
|
-
|
12
|
-
|
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
|
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
|
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"] =
|
15
|
-
webhook_body["resource"]["state"]["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
|
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"] =
|
15
|
-
webhook_body["
|
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
|
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
|
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? }
|
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.
|
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-
|
11
|
+
date: 2025-08-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|