defra_ruby_mocks 2.3.2 → 2.3.3
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_controller.rb +5 -3
- data/app/jobs/defra_ruby_mocks/application_job.rb +6 -0
- data/app/jobs/defra_ruby_mocks/govpay_payment_callback_job.rb +17 -0
- data/app/services/defra_ruby_mocks/govpay_create_payment_service.rb +41 -13
- data/app/services/defra_ruby_mocks/govpay_get_payment_service.rb +74 -16
- data/lib/defra_ruby_mocks/version.rb +1 -1
- data/spec/dummy/log/test.log +1488 -0
- data/spec/examples.txt +119 -110
- data/spec/fixtures/files/govpay/create_payment_created_response.json +24 -0
- data/spec/fixtures/files/govpay/create_payment_error_response.json +5 -0
- data/spec/fixtures/files/govpay/get_payment_response_cancelled.json +61 -0
- data/spec/fixtures/files/govpay/get_payment_response_created.json +73 -0
- data/spec/fixtures/files/govpay/get_payment_response_error.json +5 -0
- data/spec/fixtures/files/govpay/get_payment_response_failure.json +9 -0
- data/spec/fixtures/files/govpay/get_payment_response_not_found.json +4 -0
- data/spec/fixtures/files/govpay/get_payment_response_submitted.json +75 -0
- data/spec/fixtures/files/govpay/get_payment_response_success.json +62 -0
- data/spec/fixtures/{payment_request_invalid.xml → files/worldpay/payment_request_invalid.xml} +0 -0
- data/spec/fixtures/{payment_request_valid.xml → files/worldpay/payment_request_valid.xml} +0 -0
- data/spec/fixtures/{refund_request_invalid.xml → files/worldpay/refund_request_invalid.xml} +0 -0
- data/spec/fixtures/{refund_request_valid.xml → files/worldpay/refund_request_valid.xml} +0 -0
- data/spec/fixtures/{unrecognised_request.xml → files/worldpay/unrecognised_request.xml} +0 -0
- data/spec/requests/govpay_spec.rb +20 -0
- data/spec/requests/worldpay_spec.rb +3 -3
- data/spec/services/govpay_create_payment_service_spec.rb +44 -0
- data/spec/services/govpay_get_payment_service_spec.rb +30 -0
- data/spec/services/worldpay_payment_service_spec.rb +2 -2
- data/spec/services/worldpay_refund_service_spec.rb +2 -2
- data/spec/services/worldpay_request_handler_service_spec.rb +3 -3
- metadata +36 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9215253284f8928c0b731ac83de618da7e328ee04a75453290956132bb72d65d
|
4
|
+
data.tar.gz: 56087ad7a0263a7d6cb70d2a6d02df385c33262735a544921fbd0f25a7a607f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c2fa8dee0d93abf131a79cad79b6a94c58fa6e9541051c9d39fbba645b294b35ce7246a4ebc69a4854765ac002b6e77acb98fa6cad785b0a82bb4ad4b0c4f7f4
|
7
|
+
data.tar.gz: c01f83850554a60d11341677892d92e9c13613481aa48d5967ed3fdbdd6de5f45620ceb7623294d58656e23b3a4e4decfc9ffa1431ae656757db5bc559c9197e
|
@@ -3,16 +3,19 @@
|
|
3
3
|
module DefraRubyMocks
|
4
4
|
class GovpayController < ::DefraRubyMocks::ApplicationController
|
5
5
|
|
6
|
-
|
6
|
+
skip_before_action :verify_authenticity_token
|
7
7
|
|
8
8
|
def create_payment
|
9
9
|
valid_create_params
|
10
|
+
|
11
|
+
# Enqueue the payment callback to run after the controller responds
|
12
|
+
DefraRubyMocks::GovpayPaymentCallbackJob.perform_later(params[:return_url])
|
13
|
+
|
10
14
|
render json: GovpayCreatePaymentService.new.run(
|
11
15
|
amount: params[:amount], description: params[:description], return_url: params[:return_url]
|
12
16
|
)
|
13
17
|
rescue StandardError => e
|
14
18
|
Rails.logger.error("MOCKS: Govpay payment creation error: #{e.message}")
|
15
|
-
Rails.logger.error e.backtrace
|
16
19
|
head 500
|
17
20
|
end
|
18
21
|
|
@@ -21,7 +24,6 @@ module DefraRubyMocks
|
|
21
24
|
render json: GovpayGetPaymentService.new.run(payment_id: params[:payment_id])
|
22
25
|
rescue StandardError => e
|
23
26
|
Rails.logger.error("MOCKS: Govpay payment details error: #{e.message}")
|
24
|
-
Rails.logger.error e.backtrace
|
25
27
|
head 422
|
26
28
|
end
|
27
29
|
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DefraRubyMocks
|
4
|
+
class GovpayPaymentCallbackJob < DefraRubyMocks::ApplicationJob
|
5
|
+
queue_as :default
|
6
|
+
|
7
|
+
def perform(*response_url)
|
8
|
+
Rails.logger.debug "GovpayPaymentCallbackJob calling response URL #{response_url}"
|
9
|
+
RestClient::Request.execute(method: :GET, url: response_url)
|
10
|
+
rescue RestClient::ExceptionWithResponse => e
|
11
|
+
Rails.logger.debug "GovpayPaymentCallbackJob: RestClient received response: #{e}"
|
12
|
+
rescue StandardError => e
|
13
|
+
Rails.logger.error("GovpayPaymentCallbackJob: Error sending request to govpay: #{e}")
|
14
|
+
Airbrake.notify(e, message: "Error on govpay request")
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -6,19 +6,17 @@ module DefraRubyMocks
|
|
6
6
|
class GovpayCreatePaymentService < BaseService
|
7
7
|
|
8
8
|
def run(amount:, description:, return_url:)
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
payment_provider: "sandbox"
|
21
|
-
}
|
9
|
+
success_response.merge(
|
10
|
+
{
|
11
|
+
_links: {
|
12
|
+
self: { href: "#{base_url}/#{payment_id}", method: "GET" },
|
13
|
+
next_url: { href: return_url, method: "GET" }
|
14
|
+
},
|
15
|
+
amount: amount.to_i,
|
16
|
+
description: description,
|
17
|
+
payment_id: payment_id
|
18
|
+
}
|
19
|
+
)
|
22
20
|
end
|
23
21
|
|
24
22
|
private
|
@@ -30,5 +28,35 @@ module DefraRubyMocks
|
|
30
28
|
def payment_id
|
31
29
|
@payment_id ||= SecureRandom.alphanumeric(26)
|
32
30
|
end
|
31
|
+
|
32
|
+
# rubocop:disable Metrics/MethodLength
|
33
|
+
def success_response
|
34
|
+
{
|
35
|
+
"created_date": "2020-03-03T16:17:19.554Z",
|
36
|
+
"state": {
|
37
|
+
"status": "created",
|
38
|
+
"finished": false
|
39
|
+
},
|
40
|
+
"_links": {
|
41
|
+
"self": {
|
42
|
+
"href": "https://publicapi.payments.service.gov.uk/v1/payments/hu20sqlact5260q2nanm0q8u93",
|
43
|
+
"method": "GET"
|
44
|
+
},
|
45
|
+
"next_url": {
|
46
|
+
"href": "https://www.payments.service.gov.uk/secure/bb0a272c-8eaf-468d-b3xf-ae5e000d2231",
|
47
|
+
"method": "GET"
|
48
|
+
}
|
49
|
+
},
|
50
|
+
"amount": 14_500,
|
51
|
+
"reference": "12345",
|
52
|
+
"description": "Pay your council tax",
|
53
|
+
"return_url": "https://your.service.gov.uk/completed",
|
54
|
+
"payment_id": "hu20sqlact5260q2nanm0q8u93",
|
55
|
+
"payment_provider": "worldpay",
|
56
|
+
"provider_id": "10987654321"
|
57
|
+
}
|
58
|
+
end
|
59
|
+
# rubocop:enable Metrics/MethodLength
|
60
|
+
|
33
61
|
end
|
34
62
|
end
|
@@ -6,27 +6,85 @@ module DefraRubyMocks
|
|
6
6
|
class GovpayGetPaymentService < BaseService
|
7
7
|
|
8
8
|
def run(payment_id:, amount: Random.rand(100..1_000), created_at: Time.current)
|
9
|
+
# This currently supports only success results:
|
10
|
+
response_success.merge(
|
11
|
+
{
|
12
|
+
created_date: created_at,
|
13
|
+
amount: amount,
|
14
|
+
payment_id: payment_id,
|
15
|
+
total_amount: amount
|
16
|
+
}
|
17
|
+
)
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
# rubocop:disable Metrics/MethodLength
|
23
|
+
def response_success
|
9
24
|
{
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
25
|
+
"amount": 10_501,
|
26
|
+
"description": "Waste carrier registration upper tier",
|
27
|
+
"reference": "12345",
|
28
|
+
"language": "en",
|
29
|
+
"metadata": {
|
30
|
+
"ledger_code": "AB100",
|
31
|
+
"an_internal_reference_number": 200
|
32
|
+
},
|
33
|
+
"email": "sherlock.holmes@example.com",
|
34
|
+
"state": {
|
35
|
+
"status": "success",
|
36
|
+
"finished": true
|
37
|
+
},
|
38
|
+
"payment_id": "cnnffa1e6s3u9a6n24u2cp527d",
|
39
|
+
"payment_provider": "sandbox",
|
40
|
+
"created_date": "2022-05-18T11:52:13.669Z",
|
41
|
+
"refund_summary": {
|
42
|
+
"status": "available",
|
43
|
+
"amount_available": 10_501,
|
44
|
+
"amount_submitted": 0
|
45
|
+
},
|
46
|
+
"settlement_summary": {
|
47
|
+
"capture_submit_time": "2022-05-18T11:52:39.172Z",
|
48
|
+
"captured_date": "2022-05-18"
|
15
49
|
},
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
50
|
+
"card_details": {
|
51
|
+
"last_digits_card_number": "5100",
|
52
|
+
"first_digits_card_number": "510510",
|
53
|
+
"cardholder_name": "Sherlock Holmes",
|
54
|
+
"expiry_date": "01/24",
|
55
|
+
"billing_address": {
|
56
|
+
"line1": "221 Baker Street",
|
57
|
+
"line2": "Flat b",
|
58
|
+
"postcode": "NW1 6XE",
|
59
|
+
"city": "London",
|
60
|
+
"country": "GB"
|
61
|
+
},
|
62
|
+
"card_brand": "Mastercard",
|
63
|
+
"card_type": "debit"
|
24
64
|
},
|
25
|
-
|
26
|
-
|
27
|
-
provider_id: "
|
65
|
+
"delayed_capture": false,
|
66
|
+
"moto": false,
|
67
|
+
"provider_id": "9bb0c2c1-d0c5-4a63-8945-f4240e06f8ae",
|
68
|
+
"return_url": "https://some-wcr-env.defra.gov.uk/completed",
|
69
|
+
"authorisation_mode": "web",
|
70
|
+
"card_brand": "Mastercard",
|
71
|
+
"_links": {
|
72
|
+
"self": {
|
73
|
+
"href": "https://publicapi.payments.service.gov.uk/v1/payments/cnnffa1e6s3u9a6n24u2cp527d",
|
74
|
+
"method": "GET"
|
75
|
+
},
|
76
|
+
"events": {
|
77
|
+
"href": "https://publicapi.payments.service.gov.uk/v1/payments/cnnffa1e6s3u9a6n24u2cp527d/events",
|
78
|
+
"method": "GET"
|
79
|
+
},
|
80
|
+
"refunds": {
|
81
|
+
"href": "https://publicapi.payments.service.gov.uk/v1/payments/cnnffa1e6s3u9a6n24u2cp527d/refunds",
|
82
|
+
"method": "GET"
|
83
|
+
}
|
84
|
+
}
|
28
85
|
}
|
29
86
|
end
|
87
|
+
# rubocop:enable Metrics/MethodLength
|
30
88
|
|
31
89
|
end
|
32
90
|
end
|