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.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/defra_ruby_mocks/govpay_controller.rb +5 -3
  3. data/app/jobs/defra_ruby_mocks/application_job.rb +6 -0
  4. data/app/jobs/defra_ruby_mocks/govpay_payment_callback_job.rb +17 -0
  5. data/app/services/defra_ruby_mocks/govpay_create_payment_service.rb +41 -13
  6. data/app/services/defra_ruby_mocks/govpay_get_payment_service.rb +74 -16
  7. data/lib/defra_ruby_mocks/version.rb +1 -1
  8. data/spec/dummy/log/test.log +1488 -0
  9. data/spec/examples.txt +119 -110
  10. data/spec/fixtures/files/govpay/create_payment_created_response.json +24 -0
  11. data/spec/fixtures/files/govpay/create_payment_error_response.json +5 -0
  12. data/spec/fixtures/files/govpay/get_payment_response_cancelled.json +61 -0
  13. data/spec/fixtures/files/govpay/get_payment_response_created.json +73 -0
  14. data/spec/fixtures/files/govpay/get_payment_response_error.json +5 -0
  15. data/spec/fixtures/files/govpay/get_payment_response_failure.json +9 -0
  16. data/spec/fixtures/files/govpay/get_payment_response_not_found.json +4 -0
  17. data/spec/fixtures/files/govpay/get_payment_response_submitted.json +75 -0
  18. data/spec/fixtures/files/govpay/get_payment_response_success.json +62 -0
  19. data/spec/fixtures/{payment_request_invalid.xml → files/worldpay/payment_request_invalid.xml} +0 -0
  20. data/spec/fixtures/{payment_request_valid.xml → files/worldpay/payment_request_valid.xml} +0 -0
  21. data/spec/fixtures/{refund_request_invalid.xml → files/worldpay/refund_request_invalid.xml} +0 -0
  22. data/spec/fixtures/{refund_request_valid.xml → files/worldpay/refund_request_valid.xml} +0 -0
  23. data/spec/fixtures/{unrecognised_request.xml → files/worldpay/unrecognised_request.xml} +0 -0
  24. data/spec/requests/govpay_spec.rb +20 -0
  25. data/spec/requests/worldpay_spec.rb +3 -3
  26. data/spec/services/govpay_create_payment_service_spec.rb +44 -0
  27. data/spec/services/govpay_get_payment_service_spec.rb +30 -0
  28. data/spec/services/worldpay_payment_service_spec.rb +2 -2
  29. data/spec/services/worldpay_refund_service_spec.rb +2 -2
  30. data/spec/services/worldpay_request_handler_service_spec.rb +3 -3
  31. 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.2
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-23 00:00:00.000000000 Z
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/payment_request_invalid.xml
217
- - spec/fixtures/payment_request_valid.xml
218
- - spec/fixtures/refund_request_invalid.xml
219
- - spec/fixtures/refund_request_valid.xml
220
- - spec/fixtures/unrecognised_request.xml
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