defra_ruby_mocks 2.3.2 → 2.3.3

Sign up to get free protection for your applications and to get access to all the features.
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