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
@@ -40,6 +40,11 @@ module DefraRubyMocks
|
|
40
40
|
expect(response_json["description"]).to eq payment_request[:description]
|
41
41
|
expect(response_json["_links"]["next_url"]["href"]).to eq payment_request[:return_url]
|
42
42
|
end
|
43
|
+
|
44
|
+
it "enqueues a job to perform the payment callback" do
|
45
|
+
ActiveJob::Base.queue_adapter = :test
|
46
|
+
expect { post path, params: payment_request.as_json }.to have_enqueued_job(GovpayPaymentCallbackJob)
|
47
|
+
end
|
43
48
|
end
|
44
49
|
|
45
50
|
context "when the request is missing a mandatory parameter" do
|
@@ -55,8 +60,16 @@ module DefraRubyMocks
|
|
55
60
|
|
56
61
|
describe "#payment_details" do
|
57
62
|
let(:path) { "/defra_ruby_mocks/govpay/v1/payments/#{payment_id}" }
|
63
|
+
|
58
64
|
context "when the payment id is valid" do
|
65
|
+
before do
|
66
|
+
allow(GovpayGetPaymentService).to receive(:run)
|
67
|
+
.with(payment_id)
|
68
|
+
.and_return(JSON.parse(File.read("spec/fixtures/files/govpay/get_payment_response_success.json")))
|
69
|
+
end
|
70
|
+
|
59
71
|
let(:payment_id) { "12345678901234567890123456" }
|
72
|
+
|
60
73
|
it "returns a valid success response" do
|
61
74
|
get path
|
62
75
|
|
@@ -65,7 +78,14 @@ module DefraRubyMocks
|
|
65
78
|
end
|
66
79
|
|
67
80
|
context "when the payment id is not valid" do
|
81
|
+
before do
|
82
|
+
allow(GovpayGetPaymentService).to receive(:run)
|
83
|
+
.with(payment_id)
|
84
|
+
.and_return(JSON.parse(File.read("spec/fixtures/files/govpay/get_payment_response_error.json")))
|
85
|
+
end
|
86
|
+
|
68
87
|
let(:payment_id) { "0" }
|
88
|
+
|
69
89
|
it "returns a 422 response" do
|
70
90
|
get path
|
71
91
|
|
@@ -21,7 +21,7 @@ module DefraRubyMocks
|
|
21
21
|
|
22
22
|
context "when a payment request is received" do
|
23
23
|
context "and the request is valid" do
|
24
|
-
let(:data) { File.read("spec/fixtures/payment_request_valid.xml") }
|
24
|
+
let(:data) { File.read("spec/fixtures/files/worldpay/payment_request_valid.xml") }
|
25
25
|
|
26
26
|
it "returns an XML response with a 200 code" do
|
27
27
|
post path, headers: { "RAW_POST_DATA" => data }
|
@@ -33,7 +33,7 @@ module DefraRubyMocks
|
|
33
33
|
end
|
34
34
|
|
35
35
|
context "and the request is invalid" do
|
36
|
-
let(:data) { File.read("spec/fixtures/payment_request_invalid.xml") }
|
36
|
+
let(:data) { File.read("spec/fixtures/files/worldpay/payment_request_invalid.xml") }
|
37
37
|
|
38
38
|
it "returns a response with a 500 code" do
|
39
39
|
post path, headers: { "RAW_POST_DATA" => data }
|
@@ -45,7 +45,7 @@ module DefraRubyMocks
|
|
45
45
|
|
46
46
|
context "when a refund request is received" do
|
47
47
|
context "and the request is valid" do
|
48
|
-
let(:data) { File.read("spec/fixtures/refund_request_valid.xml") }
|
48
|
+
let(:data) { File.read("spec/fixtures/files/worldpay/refund_request_valid.xml") }
|
49
49
|
|
50
50
|
it "returns an XML response with a 200 code" do
|
51
51
|
post path, headers: { "RAW_POST_DATA" => data }
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "rails_helper"
|
4
|
+
|
5
|
+
module DefraRubyMocks
|
6
|
+
|
7
|
+
RSpec.describe GovpayCreatePaymentService do
|
8
|
+
|
9
|
+
before(:each) do
|
10
|
+
Helpers::Configuration.prep_for_tests
|
11
|
+
DefraRubyMocks.configure do |config|
|
12
|
+
config.govpay_domain = "http://localhost:3000/defra_ruby_mocks"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
let(:amount) { Faker::Number.number(digits: 4) }
|
17
|
+
let(:description) { Faker::Lorem.sentence }
|
18
|
+
let(:return_url) { Faker::Internet.url }
|
19
|
+
|
20
|
+
describe ".run" do
|
21
|
+
|
22
|
+
subject { described_class.run(amount: amount, description: description, return_url: return_url).deep_symbolize_keys }
|
23
|
+
|
24
|
+
context "for a valid payment request" do
|
25
|
+
|
26
|
+
it "returns a payment response with the order amount" do
|
27
|
+
expect(subject[:amount]).to eq(amount)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "returns a payment response with the description" do
|
31
|
+
expect(subject[:description]).to eq(description)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "returns a payment response with the return_url" do
|
35
|
+
expect(subject[:_links][:next_url][:href]).to eq(return_url)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "returns the expected status" do
|
39
|
+
expect(subject[:state][:status]).to eq("created")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "rails_helper"
|
4
|
+
|
5
|
+
module DefraRubyMocks
|
6
|
+
|
7
|
+
RSpec.describe GovpayGetPaymentService do
|
8
|
+
before { Helpers::Configuration.prep_for_tests }
|
9
|
+
|
10
|
+
let(:order_value) { Faker::Number.number(digits: 4) }
|
11
|
+
let(:payment_id) { SecureRandom.hex(26) }
|
12
|
+
|
13
|
+
# Note that the service currently supports only success responses.
|
14
|
+
describe ".run" do
|
15
|
+
|
16
|
+
subject { described_class.run(payment_id: payment_id, amount: order_value).deep_symbolize_keys }
|
17
|
+
|
18
|
+
context "when the payment is successful" do
|
19
|
+
|
20
|
+
it "returns a payment with the order amount" do
|
21
|
+
expect(subject[:amount]).to eq(order_value)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "returns the expected status" do
|
25
|
+
expect(subject[:state][:status]).to eq("success")
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -25,7 +25,7 @@ module DefraRubyMocks
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
let(:xml) { Nokogiri::XML(File.read("spec/fixtures/payment_request_valid.xml")) }
|
28
|
+
let(:xml) { Nokogiri::XML(File.read("spec/fixtures/files/worldpay/payment_request_valid.xml")) }
|
29
29
|
|
30
30
|
context "the result it returns" do
|
31
31
|
it "is a hash" do
|
@@ -84,7 +84,7 @@ module DefraRubyMocks
|
|
84
84
|
end
|
85
85
|
|
86
86
|
context "when the XML is invalid" do
|
87
|
-
let(:xml) { Nokogiri::XML(File.read("spec/fixtures/payment_request_invalid.xml")) }
|
87
|
+
let(:xml) { Nokogiri::XML(File.read("spec/fixtures/files/worldpay/payment_request_invalid.xml")) }
|
88
88
|
|
89
89
|
it "raises an error" do
|
90
90
|
expect { described_class.run(args) }.to raise_error StandardError
|
@@ -11,7 +11,7 @@ module DefraRubyMocks
|
|
11
11
|
|
12
12
|
context "when the XML is valid" do
|
13
13
|
|
14
|
-
let(:xml) { Nokogiri::XML(File.read("spec/fixtures/refund_request_valid.xml")) }
|
14
|
+
let(:xml) { Nokogiri::XML(File.read("spec/fixtures/files/worldpay/refund_request_valid.xml")) }
|
15
15
|
|
16
16
|
context "the result it returns" do
|
17
17
|
it "is a hash" do
|
@@ -57,7 +57,7 @@ module DefraRubyMocks
|
|
57
57
|
end
|
58
58
|
|
59
59
|
context "when the XML is invalid" do
|
60
|
-
let(:xml) { Nokogiri::XML(File.read("spec/fixtures/refund_request_invalid.xml")) }
|
60
|
+
let(:xml) { Nokogiri::XML(File.read("spec/fixtures/files/worldpay/refund_request_invalid.xml")) }
|
61
61
|
|
62
62
|
it "raises an error" do
|
63
63
|
expect { described_class.run(args) }.to raise_error StandardError
|
@@ -15,7 +15,7 @@ module DefraRubyMocks
|
|
15
15
|
allow_any_instance_of(WorldpayPaymentService).to receive(:generate_id) { order_id }
|
16
16
|
end
|
17
17
|
|
18
|
-
let(:xml) { Nokogiri::XML(File.read("spec/fixtures/payment_request_valid.xml")) }
|
18
|
+
let(:xml) { Nokogiri::XML(File.read("spec/fixtures/files/worldpay/payment_request_valid.xml")) }
|
19
19
|
let(:order_id) { "1234567890" }
|
20
20
|
let(:request_type) { { request_type: :payment } }
|
21
21
|
let(:response_values) do
|
@@ -41,7 +41,7 @@ module DefraRubyMocks
|
|
41
41
|
end
|
42
42
|
|
43
43
|
context "and it's for a refund" do
|
44
|
-
let(:xml) { Nokogiri::XML(File.read("spec/fixtures/refund_request_valid.xml")) }
|
44
|
+
let(:xml) { Nokogiri::XML(File.read("spec/fixtures/files/worldpay/refund_request_valid.xml")) }
|
45
45
|
let(:request_type) { { request_type: :refund } }
|
46
46
|
let(:response_values) do
|
47
47
|
{
|
@@ -67,7 +67,7 @@ module DefraRubyMocks
|
|
67
67
|
end
|
68
68
|
|
69
69
|
context "but it's not recognised" do
|
70
|
-
let(:xml) { Nokogiri::XML(File.read("spec/fixtures/unrecognised_request.xml")) }
|
70
|
+
let(:xml) { Nokogiri::XML(File.read("spec/fixtures/files/worldpay/unrecognised_request.xml")) }
|
71
71
|
|
72
72
|
it "raises a 'UnrecognisedWorldpayRequestError'" do
|
73
73
|
expect { described_class.run(xml) }.to raise_error UnrecognisedWorldpayRequestError
|
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: 2.3.
|
4
|
+
version: 2.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Defra
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-06-
|
11
|
+
date: 2022-06-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -151,6 +151,8 @@ files:
|
|
151
151
|
- app/controllers/defra_ruby_mocks/company_controller.rb
|
152
152
|
- app/controllers/defra_ruby_mocks/govpay_controller.rb
|
153
153
|
- app/controllers/defra_ruby_mocks/worldpay_controller.rb
|
154
|
+
- app/jobs/defra_ruby_mocks/application_job.rb
|
155
|
+
- app/jobs/defra_ruby_mocks/govpay_payment_callback_job.rb
|
154
156
|
- app/services/defra_ruby_mocks/base_service.rb
|
155
157
|
- app/services/defra_ruby_mocks/companies_house_service.rb
|
156
158
|
- app/services/defra_ruby_mocks/govpay_create_payment_service.rb
|
@@ -213,11 +215,20 @@ files:
|
|
213
215
|
- spec/dummy/public/500.html
|
214
216
|
- spec/dummy/public/favicon.ico
|
215
217
|
- spec/examples.txt
|
216
|
-
- spec/fixtures/
|
217
|
-
- spec/fixtures/
|
218
|
-
- spec/fixtures/
|
219
|
-
- spec/fixtures/
|
220
|
-
- spec/fixtures/
|
218
|
+
- spec/fixtures/files/govpay/create_payment_created_response.json
|
219
|
+
- spec/fixtures/files/govpay/create_payment_error_response.json
|
220
|
+
- spec/fixtures/files/govpay/get_payment_response_cancelled.json
|
221
|
+
- spec/fixtures/files/govpay/get_payment_response_created.json
|
222
|
+
- spec/fixtures/files/govpay/get_payment_response_error.json
|
223
|
+
- spec/fixtures/files/govpay/get_payment_response_failure.json
|
224
|
+
- spec/fixtures/files/govpay/get_payment_response_not_found.json
|
225
|
+
- spec/fixtures/files/govpay/get_payment_response_submitted.json
|
226
|
+
- spec/fixtures/files/govpay/get_payment_response_success.json
|
227
|
+
- spec/fixtures/files/worldpay/payment_request_invalid.xml
|
228
|
+
- spec/fixtures/files/worldpay/payment_request_valid.xml
|
229
|
+
- spec/fixtures/files/worldpay/refund_request_invalid.xml
|
230
|
+
- spec/fixtures/files/worldpay/refund_request_valid.xml
|
231
|
+
- spec/fixtures/files/worldpay/unrecognised_request.xml
|
221
232
|
- spec/lib/configuration_spec.rb
|
222
233
|
- spec/rails_helper.rb
|
223
234
|
- spec/requests/company_spec.rb
|
@@ -225,6 +236,8 @@ files:
|
|
225
236
|
- spec/requests/officers_spec.rb
|
226
237
|
- spec/requests/worldpay_spec.rb
|
227
238
|
- spec/services/companies_house_service_spec.rb
|
239
|
+
- spec/services/govpay_create_payment_service_spec.rb
|
240
|
+
- spec/services/govpay_get_payment_service_spec.rb
|
228
241
|
- spec/services/worldpay_payment_service_spec.rb
|
229
242
|
- spec/services/worldpay_refund_service_spec.rb
|
230
243
|
- spec/services/worldpay_request_handler_service_spec.rb
|
@@ -310,15 +323,26 @@ test_files:
|
|
310
323
|
- spec/support/helpers/configuration.rb
|
311
324
|
- spec/support/helpers/waste_carriers_engine.rb
|
312
325
|
- spec/lib/configuration_spec.rb
|
313
|
-
- spec/fixtures/unrecognised_request.xml
|
314
|
-
- spec/fixtures/payment_request_invalid.xml
|
315
|
-
- spec/fixtures/refund_request_valid.xml
|
316
|
-
- spec/fixtures/payment_request_valid.xml
|
317
|
-
- spec/fixtures/refund_request_invalid.xml
|
326
|
+
- spec/fixtures/files/worldpay/unrecognised_request.xml
|
327
|
+
- spec/fixtures/files/worldpay/payment_request_invalid.xml
|
328
|
+
- spec/fixtures/files/worldpay/refund_request_valid.xml
|
329
|
+
- spec/fixtures/files/worldpay/payment_request_valid.xml
|
330
|
+
- spec/fixtures/files/worldpay/refund_request_invalid.xml
|
331
|
+
- spec/fixtures/files/govpay/get_payment_response_submitted.json
|
332
|
+
- spec/fixtures/files/govpay/get_payment_response_not_found.json
|
333
|
+
- spec/fixtures/files/govpay/create_payment_created_response.json
|
334
|
+
- spec/fixtures/files/govpay/get_payment_response_created.json
|
335
|
+
- spec/fixtures/files/govpay/create_payment_error_response.json
|
336
|
+
- spec/fixtures/files/govpay/get_payment_response_success.json
|
337
|
+
- spec/fixtures/files/govpay/get_payment_response_failure.json
|
338
|
+
- spec/fixtures/files/govpay/get_payment_response_cancelled.json
|
339
|
+
- spec/fixtures/files/govpay/get_payment_response_error.json
|
318
340
|
- spec/rails_helper.rb
|
341
|
+
- spec/services/govpay_get_payment_service_spec.rb
|
319
342
|
- spec/services/worldpay_response_service_spec.rb
|
320
343
|
- spec/services/worldpay_resource_service_spec.rb
|
321
344
|
- spec/services/companies_house_service_spec.rb
|
322
345
|
- spec/services/worldpay_payment_service_spec.rb
|
323
346
|
- spec/services/worldpay_refund_service_spec.rb
|
324
347
|
- spec/services/worldpay_request_handler_service_spec.rb
|
348
|
+
- spec/services/govpay_create_payment_service_spec.rb
|