defra_ruby_mocks 1.0.0 → 1.4.1

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 (41) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +90 -2
  3. data/Rakefile +0 -2
  4. data/app/controllers/defra_ruby_mocks/company_controller.rb +1 -1
  5. data/app/controllers/defra_ruby_mocks/worldpay_controller.rb +51 -0
  6. data/app/services/defra_ruby_mocks/worldpay_payment_service.rb +47 -0
  7. data/app/services/defra_ruby_mocks/worldpay_refund_service.rb +37 -0
  8. data/app/services/defra_ruby_mocks/worldpay_request_handler_service.rb +40 -0
  9. data/app/services/defra_ruby_mocks/worldpay_resource_service.rb +55 -0
  10. data/app/services/defra_ruby_mocks/worldpay_response_service.rb +92 -0
  11. data/app/views/defra_ruby_mocks/worldpay/payment_request.xml.erb +4 -0
  12. data/app/views/defra_ruby_mocks/worldpay/refund_request.xml.erb +4 -0
  13. data/app/views/defra_ruby_mocks/worldpay/stuck.html.erb +37 -0
  14. data/config/routes.rb +11 -0
  15. data/lib/defra_ruby_mocks/configuration.rb +2 -0
  16. data/lib/defra_ruby_mocks/engine.rb +3 -0
  17. data/lib/defra_ruby_mocks/invalid_config_error.rb +9 -0
  18. data/lib/defra_ruby_mocks/missing_resource_error.rb +9 -0
  19. data/lib/defra_ruby_mocks/unrecognised_worldpay_request_error.rb +5 -0
  20. data/lib/defra_ruby_mocks/version.rb +1 -1
  21. data/spec/dummy/log/development.log +180 -0
  22. data/spec/dummy/log/test.log +679 -99
  23. data/spec/examples.txt +83 -30
  24. data/spec/fixtures/payment_request_invalid.xml +6 -0
  25. data/spec/fixtures/payment_request_valid.xml +30 -0
  26. data/spec/fixtures/refund_request_invalid.xml +6 -0
  27. data/spec/fixtures/refund_request_valid.xml +11 -0
  28. data/spec/fixtures/unrecognised_request.xml +6 -0
  29. data/spec/requests/company_spec.rb +3 -3
  30. data/spec/requests/worldpay_spec.rb +142 -0
  31. data/spec/services/worldpay_payment_service_spec.rb +95 -0
  32. data/spec/services/worldpay_refund_service_spec.rb +68 -0
  33. data/spec/services/worldpay_request_handler_service_spec.rb +79 -0
  34. data/spec/services/worldpay_resource_service_spec.rb +112 -0
  35. data/spec/services/worldpay_response_service_spec.rb +156 -0
  36. data/spec/spec_helper.rb +3 -2
  37. data/spec/support/helpers/configuration.rb +1 -0
  38. data/spec/support/helpers/helpers.rb +13 -0
  39. data/spec/support/helpers/waste_carriers_engine.rb +10 -0
  40. data/spec/support/helpers/xml_matchers.rb +19 -0
  41. metadata +75 -8
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails_helper"
4
+
5
+ module DefraRubyMocks
6
+ RSpec.describe WorldpayRequestHandlerService do
7
+ describe ".run" do
8
+ context "when a request is made" do
9
+
10
+ let(:merchant_code) { "MERCHME" }
11
+ let(:args) { { merchant_code: merchant_code, xml: xml } }
12
+
13
+ context "and it's for a payment" do
14
+ before do
15
+ allow_any_instance_of(WorldpayPaymentService).to receive(:generate_id) { order_id }
16
+ end
17
+
18
+ let(:xml) { Nokogiri::XML(File.read("spec/fixtures/payment_request_valid.xml")) }
19
+ let(:order_id) { "1234567890" }
20
+ let(:request_type) { { request_type: :payment } }
21
+ let(:response_values) do
22
+ {
23
+ merchant_code: merchant_code,
24
+ order_code: "1577726052",
25
+ id: order_id,
26
+ url: "http://example.com"
27
+ }
28
+ end
29
+
30
+ it "correctly determines the request service to use" do
31
+ expect(WorldpayPaymentService).to receive(:run).with(args) { response_values }
32
+
33
+ described_class.run(xml)
34
+ end
35
+
36
+ it "returns the values the controller needs to handle the request" do
37
+ expect(WorldpayPaymentService).to receive(:run).with(args) { response_values }
38
+
39
+ expect(described_class.run(xml)).to eq(request_type.merge(response_values))
40
+ end
41
+ end
42
+
43
+ context "and it's for a refund" do
44
+ let(:xml) { Nokogiri::XML(File.read("spec/fixtures/refund_request_valid.xml")) }
45
+ let(:request_type) { { request_type: :refund } }
46
+ let(:response_values) do
47
+ {
48
+ merchant_code: merchant_code,
49
+ order_code: "1579644835",
50
+ refund_value: "2500",
51
+ currency_code: "GBP",
52
+ exponent: "2"
53
+ }
54
+ end
55
+
56
+ it "correctly determines the request service to use" do
57
+ expect(WorldpayRefundService).to receive(:run).with(args) { response_values }
58
+
59
+ described_class.run(xml)
60
+ end
61
+
62
+ it "returns the values the controller needs to handle the request" do
63
+ expect(WorldpayRefundService).to receive(:run).with(args) { response_values }
64
+
65
+ expect(described_class.run(xml)).to eq(request_type.merge(response_values))
66
+ end
67
+ end
68
+
69
+ context "but it's not recognised" do
70
+ let(:xml) { Nokogiri::XML(File.read("spec/fixtures/unrecognised_request.xml")) }
71
+
72
+ it "raises a 'UnrecognisedWorldpayRequestError'" do
73
+ expect { described_class.run(xml) }.to raise_error UnrecognisedWorldpayRequestError
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,112 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails_helper"
4
+
5
+ module DefraRubyMocks
6
+ RSpec.describe WorldpayResourceService do
7
+ before(:each) do
8
+ allow(::WasteCarriersEngine::TransientRegistration).to receive(:where) { transient_relation }
9
+ allow(::WasteCarriersEngine::Registration).to receive(:where) { registration_relation }
10
+ end
11
+
12
+ let(:reference) { "12345" }
13
+ let(:company_name) { "Pay for the thing" }
14
+
15
+ let(:resource) { double(:resource, finance_details: finance_details, company_name: company_name) }
16
+ let(:finance_details) { double(:finance_details, orders: orders) }
17
+ let(:orders) { double(:orders, order_by: sorted_orders) }
18
+ let(:sorted_orders) { double(:sorted_orders, first: order) }
19
+ let(:order) { double(:order) }
20
+
21
+ let(:args) { { reference: reference } }
22
+
23
+ describe ".run" do
24
+
25
+ context "when the resource is a TransientRegistration" do
26
+ let(:transient_relation) { double(:relation, first: resource) }
27
+
28
+ it "will only search transient registrations" do
29
+ described_class.run(args)
30
+
31
+ expect(::WasteCarriersEngine::TransientRegistration).to have_received(:where).with(token: reference)
32
+
33
+ expect(::WasteCarriersEngine::Registration).not_to have_received(:where).with(reg_uuid: reference)
34
+ end
35
+
36
+ it "returns an object with the matching resource" do
37
+ expect(described_class.run(args).resource).to eq(resource)
38
+ end
39
+
40
+ it "returns an object with the expected order" do
41
+ expect(described_class.run(args).order).to eq(order)
42
+ end
43
+
44
+ it "returns an object with the expected company name" do
45
+ expect(described_class.run(args).company_name).to eq(company_name.downcase)
46
+ end
47
+ end
48
+
49
+ context "when the resource is a Registration" do
50
+ let(:transient_relation) { double(:relation, first: nil) }
51
+ let(:registration_relation) { double(:relation, first: resource) }
52
+
53
+ it "will search transient registrations first, then registrations" do
54
+ described_class.run(args)
55
+
56
+ expect(::WasteCarriersEngine::TransientRegistration).to have_received(:where).with(token: reference)
57
+
58
+ expect(::WasteCarriersEngine::Registration).to have_received(:where).with(reg_uuid: reference)
59
+ end
60
+
61
+ it "returns an object with the matching resource" do
62
+ expect(described_class.run(args).resource).to eq(resource)
63
+ end
64
+
65
+ it "returns an object with the expected order" do
66
+ expect(described_class.run(args).order).to eq(order)
67
+ end
68
+
69
+ it "returns an object with the expected company name" do
70
+ expect(described_class.run(args).company_name).to eq(company_name.downcase)
71
+ end
72
+ end
73
+
74
+ context "when the resource is a OrderCopyCardsRegistration" do
75
+ before do
76
+ # Because we do not copy the company name to
77
+ # `OrderCopyCardsRegistration` instances when we create them in WCR
78
+ # we need to locate the orignal registration they are based on. We
79
+ # determine in the class if the 'resource' is an instance of one by
80
+ # comparing the result of resource.class.to_s to
81
+ # "WasteCarriersEngine::OrderCopyCardsRegistration". The problem is
82
+ # when testing 'resource' is actually an instance of
83
+ # `RSpec::Mocks::Double`! So we subvert the call to class on
84
+ # RSpec::Mocks::Double to return "WasteCarriersEngine::OrderCopyCardsRegistration"
85
+ # just in this spec. We can then test that the service does indeed
86
+ # locate the original registration for a company name
87
+ allow_any_instance_of(RSpec::Mocks::Double).to receive(:class)
88
+ .and_return("WasteCarriersEngine::OrderCopyCardsRegistration")
89
+ end
90
+
91
+ let(:copy_card_resource) { double(:resource, finance_details: finance_details, reg_identifier: "CBDU123") }
92
+ let(:transient_relation) { double(:relation, first: copy_card_resource) }
93
+ let(:registration_relation) { double(:relation, first: resource) }
94
+
95
+ it "locates the original registration to grab the company name" do
96
+ expect(described_class.run(args).company_name).to eq(company_name.downcase)
97
+
98
+ expect(::WasteCarriersEngine::Registration).to have_received(:where).with(reg_identifier: "CBDU123")
99
+ end
100
+ end
101
+
102
+ context "when the resource does not exist" do
103
+ let(:transient_relation) { double(:relation, first: nil) }
104
+ let(:registration_relation) { double(:relation, first: nil) }
105
+
106
+ it "causes an error" do
107
+ expect { described_class.run(args) }.to raise_error MissingResourceError
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,156 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails_helper"
4
+
5
+ module DefraRubyMocks
6
+
7
+ RSpec.describe WorldpayResponseService do
8
+ before(:each) do
9
+ Helpers::Configuration.prep_for_tests
10
+ DefraRubyMocks.configure do |config|
11
+ config.worldpay_admin_code = admin_code
12
+ config.worldpay_merchant_code = merchant_code
13
+ config.worldpay_mac_secret = mac_secret
14
+ end
15
+
16
+ allow(WorldpayResourceService).to receive(:run) { resource }
17
+ end
18
+
19
+ let(:resource) { double(:resource, order: order, company_name: company_name.downcase) }
20
+
21
+ let(:admin_code) { "admincode1" }
22
+ let(:merchant_code) { "merchantcode1" }
23
+ let(:mac_secret) { "mac1" }
24
+ let(:reference) { "12345" }
25
+ let(:order_code) { "54321" }
26
+ let(:order_key) { "#{admin_code}^#{merchant_code}^#{order_code}" }
27
+ let(:order_value) { 105_00 }
28
+ let(:payment_status) { :AUTHORISED }
29
+ let(:company_name) { "Pay for the thing" }
30
+
31
+ let(:order) { double(:order, order_code: order_code, total_amount: order_value) }
32
+
33
+ let(:mac) do
34
+ data = [
35
+ order_key,
36
+ order_value,
37
+ "GBP",
38
+ payment_status,
39
+ mac_secret
40
+ ]
41
+
42
+ Digest::MD5.hexdigest(data.join).to_s
43
+ end
44
+
45
+ let(:query_string) do
46
+ [
47
+ "orderKey=#{order_key}",
48
+ "paymentStatus=#{payment_status}",
49
+ "paymentAmount=#{order_value}",
50
+ "paymentCurrency=GBP",
51
+ "mac=#{mac}",
52
+ "source=WP"
53
+ ].join("&")
54
+ end
55
+
56
+ let(:args) { { success_url: success_url, failure_url: failure_url } }
57
+
58
+ describe ".run" do
59
+ context "when the request comes from the waste-carriers-front-office" do
60
+ let(:success_url) { "http://example.com/fo/#{reference}/worldpay/success" }
61
+ let(:failure_url) { "http://example.com/fo/#{reference}/worldpay/failure" }
62
+
63
+ context "and is valid" do
64
+ let(:relation) { double(:relation, first: registration) }
65
+
66
+ it "can extract the reference from the `success_url`" do
67
+ expect(described_class.run(args).reference).to eq(reference)
68
+ end
69
+
70
+ it "can generate a valid order key" do
71
+ expect(described_class.run(args).order_key).to eq(order_key)
72
+ end
73
+
74
+ it "can generate a valid mac" do
75
+ expect(described_class.run(args).mac).to eq(mac)
76
+ end
77
+
78
+ context "and is for a successful payment" do
79
+ it "returns a url in the expected format" do
80
+ expected_response_url = "#{success_url}?#{query_string}"
81
+
82
+ expect(described_class.run(args).url).to eq(expected_response_url)
83
+ end
84
+ end
85
+
86
+ context "and is for a rejected payment" do
87
+ let(:payment_status) { :REFUSED }
88
+ let(:company_name) { "Reject for the thing" }
89
+
90
+ it "returns a url in the expected format" do
91
+ expected_response_url = "#{failure_url}?#{query_string}"
92
+
93
+ expect(described_class.run(args).url).to eq(expected_response_url)
94
+ end
95
+ end
96
+
97
+ context "and is for a stuck payment" do
98
+ let(:company_name) { "Give me a stuck thing" }
99
+
100
+ it "returns a status of :STUCK" do
101
+ expect(described_class.run(args).status).to eq(:STUCK)
102
+ end
103
+ end
104
+ end
105
+ end
106
+
107
+ context "when the request comes from the waste-carriers-frontend" do
108
+ let(:success_url) { "http://example.com/your-registration/#{reference}/worldpay/success/54321/NEWREG?locale=en" }
109
+ let(:failure_url) { "http://example.com/your-registration/#{reference}/worldpay/failure/54321/NEWREG?locale=en" }
110
+
111
+ context "and is valid" do
112
+ let(:relation) { double(:relation, first: registration) }
113
+
114
+ it "can extract the reference from the `success_url`" do
115
+ expect(described_class.run(args).reference).to eq(reference)
116
+ end
117
+
118
+ it "can generate a valid order key" do
119
+ expect(described_class.run(args).order_key).to eq(order_key)
120
+ end
121
+
122
+ it "can generate a valid mac" do
123
+ expect(described_class.run(args).mac).to eq(mac)
124
+ end
125
+
126
+ context "and is for a successful payment" do
127
+ it "returns a url in the expected format" do
128
+ expected_response_url = "#{success_url}&#{query_string}"
129
+
130
+ expect(described_class.run(args).url).to eq(expected_response_url)
131
+ end
132
+ end
133
+
134
+ context "and is for a rejected payment" do
135
+ let(:payment_status) { :REFUSED }
136
+ let(:company_name) { "Reject for the thing" }
137
+
138
+ it "returns a url in the expected format" do
139
+ expected_response_url = "#{failure_url}&#{query_string}"
140
+
141
+ expect(described_class.run(args).url).to eq(expected_response_url)
142
+ end
143
+ end
144
+
145
+ context "and is for a stuck payment" do
146
+ let(:company_name) { "Give me a stuck thing" }
147
+
148
+ it "returns a status of :STUCK" do
149
+ expect(described_class.run(args).status).to eq(:STUCK)
150
+ end
151
+ end
152
+ end
153
+ end
154
+ end
155
+ end
156
+ end
@@ -1,7 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "simplecov"
4
- SimpleCov.start
3
+ # Require and run our simplecov initializer as the very first thing we do.
4
+ # This is as per its docs https://github.com/colszowka/simplecov#getting-started
5
+ require "./spec/support/simplecov"
5
6
 
6
7
  # This file was generated by the `rails generate rspec:install` command. Conventionally, all
7
8
  # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
@@ -3,6 +3,7 @@
3
3
  module Helpers
4
4
  module Configuration
5
5
  def self.prep_for_tests(delay = 100)
6
+ DefraRubyMocks.reset_configuration
6
7
  DefraRubyMocks.configure do |config|
7
8
  config.enable = true
8
9
  config.delay = delay
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ def parse_for_params(url)
4
+ query = URI.parse(url).query
5
+
6
+ params = {}
7
+ query.split("&").each do |param|
8
+ parts = param.split("=")
9
+ params[parts[0]] = parts[1]
10
+ end
11
+
12
+ params
13
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module WasteCarriersEngine
4
+ class Registration
5
+ def self.where(*); end
6
+ end
7
+ class TransientRegistration
8
+ def self.where(*); end
9
+ end
10
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rspec/expectations"
4
+
5
+ RSpec::Matchers.define :be_xml do
6
+ match do
7
+ begin
8
+ Nokogiri::XML(actual, &:strict)
9
+
10
+ true
11
+ rescue Nokogiri::XML::SyntaxError
12
+ false
13
+ end
14
+ end
15
+
16
+ failure_message do |actual|
17
+ "expected that \"#{actual}\" would be a valid XML document"
18
+ end
19
+ end
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: 1.0.0
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Defra
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-30 00:00:00.000000000 Z
11
+ date: 2020-06-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -24,6 +24,34 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 4.2.11.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: sprockets
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 3.7.2
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 3.7.2
41
+ - !ruby/object:Gem::Dependency
42
+ name: nokogiri
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: github_changelog_generator
29
57
  requirement: !ruby/object:Gem::Requirement
@@ -84,16 +112,16 @@ dependencies:
84
112
  name: simplecov
85
113
  requirement: !ruby/object:Gem::Requirement
86
114
  requirements:
87
- - - ">="
115
+ - - "~>"
88
116
  - !ruby/object:Gem::Version
89
- version: '0'
117
+ version: 0.17.1
90
118
  type: :development
91
119
  prerelease: false
92
120
  version_requirements: !ruby/object:Gem::Requirement
93
121
  requirements:
94
- - - ">="
122
+ - - "~>"
95
123
  - !ruby/object:Gem::Version
96
- version: '0'
124
+ version: 0.17.1
97
125
  description: A Rails engine which can be used to mock external services when loaded
98
126
  into an application
99
127
  email:
@@ -107,14 +135,26 @@ files:
107
135
  - Rakefile
108
136
  - app/controllers/defra_ruby_mocks/application_controller.rb
109
137
  - app/controllers/defra_ruby_mocks/company_controller.rb
138
+ - app/controllers/defra_ruby_mocks/worldpay_controller.rb
110
139
  - app/services/defra_ruby_mocks/base_service.rb
111
140
  - app/services/defra_ruby_mocks/companies_house_service.rb
141
+ - app/services/defra_ruby_mocks/worldpay_payment_service.rb
142
+ - app/services/defra_ruby_mocks/worldpay_refund_service.rb
143
+ - app/services/defra_ruby_mocks/worldpay_request_handler_service.rb
144
+ - app/services/defra_ruby_mocks/worldpay_resource_service.rb
145
+ - app/services/defra_ruby_mocks/worldpay_response_service.rb
112
146
  - app/views/defra_ruby_mocks/company/not_found.json.erb
113
147
  - app/views/defra_ruby_mocks/company/show.json.erb
148
+ - app/views/defra_ruby_mocks/worldpay/payment_request.xml.erb
149
+ - app/views/defra_ruby_mocks/worldpay/refund_request.xml.erb
150
+ - app/views/defra_ruby_mocks/worldpay/stuck.html.erb
114
151
  - config/routes.rb
115
152
  - lib/defra_ruby_mocks.rb
116
153
  - lib/defra_ruby_mocks/configuration.rb
117
154
  - lib/defra_ruby_mocks/engine.rb
155
+ - lib/defra_ruby_mocks/invalid_config_error.rb
156
+ - lib/defra_ruby_mocks/missing_resource_error.rb
157
+ - lib/defra_ruby_mocks/unrecognised_worldpay_request_error.rb
118
158
  - lib/defra_ruby_mocks/version.rb
119
159
  - lib/tasks/changelog.rake
120
160
  - lib/tasks/defra_ruby_mocks_tasks.rake
@@ -156,12 +196,26 @@ files:
156
196
  - spec/dummy/public/500.html
157
197
  - spec/dummy/public/favicon.ico
158
198
  - spec/examples.txt
199
+ - spec/fixtures/payment_request_invalid.xml
200
+ - spec/fixtures/payment_request_valid.xml
201
+ - spec/fixtures/refund_request_invalid.xml
202
+ - spec/fixtures/refund_request_valid.xml
203
+ - spec/fixtures/unrecognised_request.xml
159
204
  - spec/lib/configuration_spec.rb
160
205
  - spec/rails_helper.rb
161
206
  - spec/requests/company_spec.rb
207
+ - spec/requests/worldpay_spec.rb
162
208
  - spec/services/companies_house_service_spec.rb
209
+ - spec/services/worldpay_payment_service_spec.rb
210
+ - spec/services/worldpay_refund_service_spec.rb
211
+ - spec/services/worldpay_request_handler_service_spec.rb
212
+ - spec/services/worldpay_resource_service_spec.rb
213
+ - spec/services/worldpay_response_service_spec.rb
163
214
  - spec/spec_helper.rb
164
215
  - spec/support/helpers/configuration.rb
216
+ - spec/support/helpers/helpers.rb
217
+ - spec/support/helpers/waste_carriers_engine.rb
218
+ - spec/support/helpers/xml_matchers.rb
165
219
  - spec/support/pry.rb
166
220
  - spec/support/simplecov.rb
167
221
  homepage: https://github.com/DEFRA/defra-ruby-mocks
@@ -183,8 +237,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
183
237
  - !ruby/object:Gem::Version
184
238
  version: '0'
185
239
  requirements: []
186
- rubyforge_project:
187
- rubygems_version: 2.6.13
240
+ rubygems_version: 3.0.0
188
241
  signing_key:
189
242
  specification_version: 4
190
243
  summary: Defra Ruby on Rails external API mocking engine
@@ -229,9 +282,23 @@ test_files:
229
282
  - spec/examples.txt
230
283
  - spec/defra_ruby_mocks_spec.rb
231
284
  - spec/requests/company_spec.rb
285
+ - spec/requests/worldpay_spec.rb
232
286
  - spec/support/simplecov.rb
233
287
  - spec/support/pry.rb
288
+ - spec/support/helpers/helpers.rb
289
+ - spec/support/helpers/xml_matchers.rb
234
290
  - spec/support/helpers/configuration.rb
291
+ - spec/support/helpers/waste_carriers_engine.rb
235
292
  - spec/lib/configuration_spec.rb
293
+ - spec/fixtures/unrecognised_request.xml
294
+ - spec/fixtures/payment_request_invalid.xml
295
+ - spec/fixtures/refund_request_valid.xml
296
+ - spec/fixtures/payment_request_valid.xml
297
+ - spec/fixtures/refund_request_invalid.xml
236
298
  - spec/rails_helper.rb
299
+ - spec/services/worldpay_response_service_spec.rb
300
+ - spec/services/worldpay_resource_service_spec.rb
237
301
  - spec/services/companies_house_service_spec.rb
302
+ - spec/services/worldpay_payment_service_spec.rb
303
+ - spec/services/worldpay_refund_service_spec.rb
304
+ - spec/services/worldpay_request_handler_service_spec.rb