defra_ruby_mocks 1.4.0 → 2.1.0
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 +5 -5
- data/README.md +27 -3
- data/app/controllers/defra_ruby_mocks/company_controller.rb +1 -1
- data/app/controllers/defra_ruby_mocks/worldpay_controller.rb +9 -4
- data/app/services/defra_ruby_mocks/base_service.rb +8 -2
- data/app/services/defra_ruby_mocks/worldpay_response_service.rb +33 -8
- data/lib/defra_ruby_mocks/version.rb +1 -1
- data/spec/dummy/log/test.log +513 -0
- data/spec/examples.txt +99 -0
- data/spec/requests/company_spec.rb +4 -4
- data/spec/requests/worldpay_spec.rb +30 -9
- data/spec/services/worldpay_response_service_spec.rb +137 -20
- data/spec/spec_helper.rb +3 -0
- metadata +27 -10
data/spec/examples.txt
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
example_id | status | run_time |
|
2
|
+
------------------------------------------------------------------- | ------ | --------------- |
|
3
|
+
./spec/defra_ruby_mocks_spec.rb[1:1:1] | passed | 0.00123 seconds |
|
4
|
+
./spec/defra_ruby_mocks_spec.rb[1:2:1:1] | passed | 0.00062 seconds |
|
5
|
+
./spec/defra_ruby_mocks_spec.rb[1:2:2:1] | passed | 0.00012 seconds |
|
6
|
+
./spec/lib/configuration_spec.rb[1:1:1:1] | passed | 0.00008 seconds |
|
7
|
+
./spec/lib/configuration_spec.rb[1:1:2:1] | passed | 0.00008 seconds |
|
8
|
+
./spec/lib/configuration_spec.rb[1:1:3:1] | passed | 0.0001 seconds |
|
9
|
+
./spec/lib/configuration_spec.rb[1:1:4:1] | passed | 0.00008 seconds |
|
10
|
+
./spec/lib/configuration_spec.rb[1:2:1:1] | passed | 0.0001 seconds |
|
11
|
+
./spec/lib/configuration_spec.rb[1:2:2:1] | passed | 0.00157 seconds |
|
12
|
+
./spec/lib/configuration_spec.rb[1:2:3:1] | passed | 0.00009 seconds |
|
13
|
+
./spec/lib/configuration_spec.rb[1:2:4:1] | passed | 0.00011 seconds |
|
14
|
+
./spec/requests/company_spec.rb[1:1:1:1] | passed | 0.00337 seconds |
|
15
|
+
./spec/requests/company_spec.rb[1:1:2:1] | passed | 0.00603 seconds |
|
16
|
+
./spec/requests/company_spec.rb[1:1:3:1:1] | passed | 0.00406 seconds |
|
17
|
+
./spec/requests/company_spec.rb[1:1:3:2:1] | passed | 0.00906 seconds |
|
18
|
+
./spec/requests/company_spec.rb[1:2:1] | passed | 0.00374 seconds |
|
19
|
+
./spec/requests/worldpay_spec.rb[1:1:1:1:1:1] | passed | 0.00694 seconds |
|
20
|
+
./spec/requests/worldpay_spec.rb[1:1:1:1:2:1] | passed | 0.0037 seconds |
|
21
|
+
./spec/requests/worldpay_spec.rb[1:1:1:2:1:1] | passed | 0.00561 seconds |
|
22
|
+
./spec/requests/worldpay_spec.rb[1:1:2:1:1:1] | passed | 0.00692 seconds |
|
23
|
+
./spec/requests/worldpay_spec.rb[1:1:2:1:2:1] | passed | 0.03455 seconds |
|
24
|
+
./spec/requests/worldpay_spec.rb[1:1:2:2:1:1] | passed | 0.00329 seconds |
|
25
|
+
./spec/requests/worldpay_spec.rb[1:2:1:1] | passed | 0.00155 seconds |
|
26
|
+
./spec/requests/worldpay_spec.rb[1:2:2:1] | passed | 0.01827 seconds |
|
27
|
+
./spec/services/companies_house_service_spec.rb[1:1:1:1] | passed | 0.00133 seconds |
|
28
|
+
./spec/services/companies_house_service_spec.rb[1:1:2:1:1] | passed | 0.00008 seconds |
|
29
|
+
./spec/services/companies_house_service_spec.rb[1:1:2:2:1] | passed | 0.0001 seconds |
|
30
|
+
./spec/services/companies_house_service_spec.rb[1:1:2:3:1] | passed | 0.00009 seconds |
|
31
|
+
./spec/services/companies_house_service_spec.rb[1:1:2:4:1] | passed | 0.00008 seconds |
|
32
|
+
./spec/services/companies_house_service_spec.rb[1:1:2:5:1] | passed | 0.119 seconds |
|
33
|
+
./spec/services/companies_house_service_spec.rb[1:1:2:6:1] | passed | 0.00009 seconds |
|
34
|
+
./spec/services/companies_house_service_spec.rb[1:1:2:7:1] | passed | 0.00008 seconds |
|
35
|
+
./spec/services/companies_house_service_spec.rb[1:1:2:8:1] | passed | 0.00016 seconds |
|
36
|
+
./spec/services/companies_house_service_spec.rb[1:1:2:9:1] | passed | 0.00009 seconds |
|
37
|
+
./spec/services/companies_house_service_spec.rb[1:1:3:1:1] | passed | 0.00012 seconds |
|
38
|
+
./spec/services/companies_house_service_spec.rb[1:1:3:2:1] | passed | 0.00012 seconds |
|
39
|
+
./spec/services/worldpay_payment_service_spec.rb[1:1:1:1] | passed | 0.00015 seconds |
|
40
|
+
./spec/services/worldpay_payment_service_spec.rb[1:1:2:1:1] | passed | 0.00032 seconds |
|
41
|
+
./spec/services/worldpay_payment_service_spec.rb[1:1:2:1:2] | passed | 0.00035 seconds |
|
42
|
+
./spec/services/worldpay_payment_service_spec.rb[1:1:2:1:3] | passed | 0.00031 seconds |
|
43
|
+
./spec/services/worldpay_payment_service_spec.rb[1:1:2:1:4] | passed | 0.00033 seconds |
|
44
|
+
./spec/services/worldpay_payment_service_spec.rb[1:1:2:1:5:1] | passed | 0.00028 seconds |
|
45
|
+
./spec/services/worldpay_payment_service_spec.rb[1:1:2:1:5:2] | passed | 0.00032 seconds |
|
46
|
+
./spec/services/worldpay_payment_service_spec.rb[1:1:2:1:5:3] | passed | 0.00042 seconds |
|
47
|
+
./spec/services/worldpay_payment_service_spec.rb[1:1:2:1:6:1] | passed | 0.00029 seconds |
|
48
|
+
./spec/services/worldpay_payment_service_spec.rb[1:1:3:1] | passed | 0.00026 seconds |
|
49
|
+
./spec/services/worldpay_refund_service_spec.rb[1:1:1:1:1] | passed | 0.00035 seconds |
|
50
|
+
./spec/services/worldpay_refund_service_spec.rb[1:1:1:1:2] | passed | 0.00034 seconds |
|
51
|
+
./spec/services/worldpay_refund_service_spec.rb[1:1:1:1:3] | passed | 0.00036 seconds |
|
52
|
+
./spec/services/worldpay_refund_service_spec.rb[1:1:1:1:4] | passed | 0.00034 seconds |
|
53
|
+
./spec/services/worldpay_refund_service_spec.rb[1:1:1:1:5] | passed | 0.0004 seconds |
|
54
|
+
./spec/services/worldpay_refund_service_spec.rb[1:1:1:1:6] | passed | 0.0004 seconds |
|
55
|
+
./spec/services/worldpay_refund_service_spec.rb[1:1:1:1:7] | passed | 0.00035 seconds |
|
56
|
+
./spec/services/worldpay_refund_service_spec.rb[1:1:2:1] | passed | 0.00069 seconds |
|
57
|
+
./spec/services/worldpay_request_handler_service_spec.rb[1:1:1:1:1] | passed | 0.00169 seconds |
|
58
|
+
./spec/services/worldpay_request_handler_service_spec.rb[1:1:1:1:2] | passed | 0.00133 seconds |
|
59
|
+
./spec/services/worldpay_request_handler_service_spec.rb[1:1:1:2:1] | passed | 0.00062 seconds |
|
60
|
+
./spec/services/worldpay_request_handler_service_spec.rb[1:1:1:2:2] | passed | 0.00074 seconds |
|
61
|
+
./spec/services/worldpay_request_handler_service_spec.rb[1:1:1:3:1] | passed | 0.00082 seconds |
|
62
|
+
./spec/services/worldpay_resource_service_spec.rb[1:1:1:1] | passed | 0.00547 seconds |
|
63
|
+
./spec/services/worldpay_resource_service_spec.rb[1:1:1:2] | passed | 0.00091 seconds |
|
64
|
+
./spec/services/worldpay_resource_service_spec.rb[1:1:1:3] | passed | 0.00076 seconds |
|
65
|
+
./spec/services/worldpay_resource_service_spec.rb[1:1:1:4] | passed | 0.00126 seconds |
|
66
|
+
./spec/services/worldpay_resource_service_spec.rb[1:1:2:1] | passed | 0.0034 seconds |
|
67
|
+
./spec/services/worldpay_resource_service_spec.rb[1:1:2:2] | passed | 0.0011 seconds |
|
68
|
+
./spec/services/worldpay_resource_service_spec.rb[1:1:2:3] | passed | 0.00105 seconds |
|
69
|
+
./spec/services/worldpay_resource_service_spec.rb[1:1:2:4] | passed | 0.00093 seconds |
|
70
|
+
./spec/services/worldpay_resource_service_spec.rb[1:1:3:1] | passed | 0.00153 seconds |
|
71
|
+
./spec/services/worldpay_resource_service_spec.rb[1:1:4:1] | passed | 0.00087 seconds |
|
72
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:1:1:1] | passed | 0.00048 seconds |
|
73
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:1:1:2] | passed | 0.00068 seconds |
|
74
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:1:1:3:1] | passed | 0.00058 seconds |
|
75
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:1:1:3:2] | passed | 0.00064 seconds |
|
76
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:1:1:4:1] | passed | 0.00053 seconds |
|
77
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:1:1:4:2] | passed | 0.00066 seconds |
|
78
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:1:1:5:1] | passed | 0.00048 seconds |
|
79
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:1:1:5:2] | passed | 0.00056 seconds |
|
80
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:1:1:6:1] | passed | 0.00068 seconds |
|
81
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:1:1:6:2] | passed | 0.00059 seconds |
|
82
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:1:1:7:1] | passed | 0.00115 seconds |
|
83
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:1:1:7:2] | passed | 0.00119 seconds |
|
84
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:1:1:8:1] | passed | 0.0006 seconds |
|
85
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:1:1:8:2] | passed | 0.00057 seconds |
|
86
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:2:1:1] | passed | 0.00054 seconds |
|
87
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:2:1:2] | passed | 0.00058 seconds |
|
88
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:2:1:3:1] | passed | 0.00063 seconds |
|
89
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:2:1:3:2] | passed | 0.00065 seconds |
|
90
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:2:1:4:1] | passed | 0.00063 seconds |
|
91
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:2:1:4:2] | passed | 0.00066 seconds |
|
92
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:2:1:5:1] | passed | 0.00056 seconds |
|
93
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:2:1:5:2] | passed | 0.00056 seconds |
|
94
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:2:1:6:1] | passed | 0.00054 seconds |
|
95
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:2:1:6:2] | passed | 0.00058 seconds |
|
96
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:2:1:7:1] | passed | 0.00078 seconds |
|
97
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:2:1:7:2] | passed | 0.00081 seconds |
|
98
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:2:1:8:1] | passed | 0.00053 seconds |
|
99
|
+
./spec/services/worldpay_response_service_spec.rb[1:1:2:1:8:2] | passed | 0.00056 seconds |
|
@@ -18,7 +18,7 @@ module DefraRubyMocks
|
|
18
18
|
get "#{path}/#{company_number}"
|
19
19
|
content = JSON.parse(response.body)
|
20
20
|
|
21
|
-
expect(response.
|
21
|
+
expect(response.media_type).to eq("application/json")
|
22
22
|
expect(response.code).to eq("404")
|
23
23
|
expect(content).to include("errors")
|
24
24
|
end
|
@@ -31,7 +31,7 @@ module DefraRubyMocks
|
|
31
31
|
get "#{path}/#{company_number}"
|
32
32
|
company_status = JSON.parse(response.body)["company_status"]
|
33
33
|
|
34
|
-
expect(response.
|
34
|
+
expect(response.media_type).to eq("application/json")
|
35
35
|
expect(response.code).to eq("200")
|
36
36
|
expect(company_status).not_to eq("active")
|
37
37
|
end
|
@@ -45,7 +45,7 @@ module DefraRubyMocks
|
|
45
45
|
get "#{path}/#{company_number}"
|
46
46
|
company_status = JSON.parse(response.body)["company_status"]
|
47
47
|
|
48
|
-
expect(response.
|
48
|
+
expect(response.media_type).to eq("application/json")
|
49
49
|
expect(response.code).to eq("200")
|
50
50
|
expect(company_status).to eq("active")
|
51
51
|
end
|
@@ -58,7 +58,7 @@ module DefraRubyMocks
|
|
58
58
|
get "#{path}/#{company_number}"
|
59
59
|
content = JSON.parse(response.body)
|
60
60
|
|
61
|
-
expect(response.
|
61
|
+
expect(response.media_type).to eq("application/json")
|
62
62
|
expect(response.code).to eq("404")
|
63
63
|
expect(content).to include("errors")
|
64
64
|
end
|
@@ -24,9 +24,9 @@ module DefraRubyMocks
|
|
24
24
|
let(:data) { File.read("spec/fixtures/payment_request_valid.xml") }
|
25
25
|
|
26
26
|
it "returns an XML response with a 200 code" do
|
27
|
-
get path, {
|
27
|
+
get path, headers: { "RAW_POST_DATA" => data }
|
28
28
|
|
29
|
-
expect(response.
|
29
|
+
expect(response.media_type).to eq("application/xml")
|
30
30
|
expect(response.code).to eq("200")
|
31
31
|
expect(response.body).to be_xml
|
32
32
|
end
|
@@ -36,7 +36,7 @@ module DefraRubyMocks
|
|
36
36
|
let(:data) { File.read("spec/fixtures/payment_request_invalid.xml") }
|
37
37
|
|
38
38
|
it "returns a response with a 500 code" do
|
39
|
-
get path, {
|
39
|
+
get path, headers: { "RAW_POST_DATA" => data }
|
40
40
|
|
41
41
|
expect(response.code).to eq("500")
|
42
42
|
end
|
@@ -48,9 +48,9 @@ module DefraRubyMocks
|
|
48
48
|
let(:data) { File.read("spec/fixtures/refund_request_valid.xml") }
|
49
49
|
|
50
50
|
it "returns an XML response with a 200 code" do
|
51
|
-
get path, {
|
51
|
+
get path, headers: { "RAW_POST_DATA" => data }
|
52
52
|
|
53
|
-
expect(response.
|
53
|
+
expect(response.media_type).to eq("application/xml")
|
54
54
|
expect(response.code).to eq("200")
|
55
55
|
expect(response.body).to be_xml
|
56
56
|
end
|
@@ -59,8 +59,22 @@ module DefraRubyMocks
|
|
59
59
|
end
|
60
60
|
|
61
61
|
context "#dispatcher" do
|
62
|
+
let(:success_url) { "http://example.com/fo/12345/worldpay/success" }
|
63
|
+
let(:failure_url) { "http://example.com/fo/12345/worldpay/failure" }
|
64
|
+
let(:pending_url) { "http://example.com/fo/12345/worldpay/pending" }
|
65
|
+
let(:cancel_url) { "http://example.com/fo/12345/worldpay/cancel" }
|
66
|
+
let(:error_url) { "http://example.com/fo/12345/worldpay/error" }
|
62
67
|
let(:response_url) { "#{success_url}?orderKey=admincode1^^987654&paymentStatus=#{status}&paymentAmount=10500&paymentCurrency=GBP&mac=0ba5271e1ed1b26f9bb428ef7fb536a4&source=WP" }
|
63
|
-
let(:path)
|
68
|
+
let(:path) do
|
69
|
+
root = "/defra_ruby_mocks/worldpay/dispatcher"
|
70
|
+
escaped_success = CGI.escape(success_url)
|
71
|
+
escaped_failure = CGI.escape(failure_url)
|
72
|
+
escaped_pending = CGI.escape(pending_url)
|
73
|
+
escaped_cancel = CGI.escape(cancel_url)
|
74
|
+
escaped_error = CGI.escape(error_url)
|
75
|
+
|
76
|
+
"#{root}?successURL=#{escaped_success}&failureURL=#{escaped_failure}&pendingURL=#{escaped_pending}&cancelURL=#{escaped_cancel}&errorURL=#{escaped_error}"
|
77
|
+
end
|
64
78
|
let(:service_response) do
|
65
79
|
double(
|
66
80
|
:response,
|
@@ -76,9 +90,16 @@ module DefraRubyMocks
|
|
76
90
|
end
|
77
91
|
|
78
92
|
context "and the request is valid" do
|
79
|
-
before(:each)
|
80
|
-
|
81
|
-
|
93
|
+
before(:each) do
|
94
|
+
allow(WorldpayResponseService).to receive(:run)
|
95
|
+
.with(
|
96
|
+
success_url: success_url,
|
97
|
+
failure_url: failure_url,
|
98
|
+
pending_url: pending_url,
|
99
|
+
cancel_url: cancel_url,
|
100
|
+
error_url: error_url
|
101
|
+
) { service_response }
|
102
|
+
end
|
82
103
|
|
83
104
|
context "and a response is expected" do
|
84
105
|
let(:status) { "AUTHORISED" }
|
@@ -30,17 +30,7 @@ module DefraRubyMocks
|
|
30
30
|
|
31
31
|
let(:order) { double(:order, order_code: order_code, total_amount: order_value) }
|
32
32
|
|
33
|
-
let(:mac)
|
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
|
33
|
+
let(:mac) { Digest::MD5.hexdigest(mac_data.join).to_s }
|
44
34
|
|
45
35
|
let(:query_string) do
|
46
36
|
[
|
@@ -53,15 +43,27 @@ module DefraRubyMocks
|
|
53
43
|
].join("&")
|
54
44
|
end
|
55
45
|
|
56
|
-
let(:args)
|
46
|
+
let(:args) do
|
47
|
+
{
|
48
|
+
success_url: success_url,
|
49
|
+
failure_url: failure_url,
|
50
|
+
pending_url: pending_url,
|
51
|
+
cancel_url: cancel_url,
|
52
|
+
error_url: error_url
|
53
|
+
}
|
54
|
+
end
|
57
55
|
|
58
56
|
describe ".run" do
|
59
57
|
context "when the request comes from the waste-carriers-front-office" do
|
60
58
|
let(:success_url) { "http://example.com/fo/#{reference}/worldpay/success" }
|
61
59
|
let(:failure_url) { "http://example.com/fo/#{reference}/worldpay/failure" }
|
60
|
+
let(:pending_url) { "http://example.com/fo/#{reference}/worldpay/pending" }
|
61
|
+
let(:cancel_url) { "http://example.com/fo/#{reference}/worldpay/cancel" }
|
62
|
+
let(:error_url) { "http://example.com/fo/#{reference}/worldpay/error" }
|
62
63
|
|
63
64
|
context "and is valid" do
|
64
65
|
let(:relation) { double(:relation, first: registration) }
|
66
|
+
let(:mac_data) { [order_key, order_value, "GBP", payment_status, mac_secret] }
|
65
67
|
|
66
68
|
it "can extract the reference from the `success_url`" do
|
67
69
|
expect(described_class.run(args).reference).to eq(reference)
|
@@ -71,11 +73,12 @@ module DefraRubyMocks
|
|
71
73
|
expect(described_class.run(args).order_key).to eq(order_key)
|
72
74
|
end
|
73
75
|
|
74
|
-
it "can generate a valid mac" do
|
75
|
-
expect(described_class.run(args).mac).to eq(mac)
|
76
|
-
end
|
77
|
-
|
78
76
|
context "and is for a successful payment" do
|
77
|
+
it "can generate a valid mac" do
|
78
|
+
puts "Test data #{mac_data.join}"
|
79
|
+
expect(described_class.run(args).mac).to eq(mac)
|
80
|
+
end
|
81
|
+
|
79
82
|
it "returns a url in the expected format" do
|
80
83
|
expected_response_url = "#{success_url}?#{query_string}"
|
81
84
|
|
@@ -87,6 +90,10 @@ module DefraRubyMocks
|
|
87
90
|
let(:payment_status) { :REFUSED }
|
88
91
|
let(:company_name) { "Reject for the thing" }
|
89
92
|
|
93
|
+
it "can generate a valid mac" do
|
94
|
+
expect(described_class.run(args).mac).to eq(mac)
|
95
|
+
end
|
96
|
+
|
90
97
|
it "returns a url in the expected format" do
|
91
98
|
expected_response_url = "#{failure_url}?#{query_string}"
|
92
99
|
|
@@ -95,21 +102,76 @@ module DefraRubyMocks
|
|
95
102
|
end
|
96
103
|
|
97
104
|
context "and is for a stuck payment" do
|
105
|
+
let(:payment_status) { :STUCK }
|
98
106
|
let(:company_name) { "Give me a stuck thing" }
|
99
107
|
|
108
|
+
it "can generate a valid mac" do
|
109
|
+
expect(described_class.run(args).mac).to eq(mac)
|
110
|
+
end
|
111
|
+
|
100
112
|
it "returns a status of :STUCK" do
|
101
113
|
expect(described_class.run(args).status).to eq(:STUCK)
|
102
114
|
end
|
103
115
|
end
|
116
|
+
|
117
|
+
context "and is for a pending payment" do
|
118
|
+
let(:payment_status) { :SENT_FOR_AUTHORISATION }
|
119
|
+
let(:company_name) { "Pending for the thing" }
|
120
|
+
|
121
|
+
it "can generate a valid mac" do
|
122
|
+
expect(described_class.run(args).mac).to eq(mac)
|
123
|
+
end
|
124
|
+
|
125
|
+
it "returns a url in the expected format" do
|
126
|
+
expected_response_url = "#{pending_url}?#{query_string}"
|
127
|
+
|
128
|
+
expect(described_class.run(args).url).to eq(expected_response_url)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
context "and is for a cancelled payment" do
|
133
|
+
let(:payment_status) { :CANCELLED }
|
134
|
+
let(:company_name) { "Cancel the thing" }
|
135
|
+
let(:mac_data) { [order_key, order_value, "GBP", mac_secret] }
|
136
|
+
|
137
|
+
it "can generate a valid mac" do
|
138
|
+
expect(described_class.run(args).mac).to eq(mac)
|
139
|
+
end
|
140
|
+
|
141
|
+
it "returns a url in the expected format" do
|
142
|
+
expected_response_url = "#{cancel_url}?#{query_string}"
|
143
|
+
|
144
|
+
expect(described_class.run(args).url).to eq(expected_response_url)
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
context "and is for an errored payment" do
|
149
|
+
let(:payment_status) { :ERROR }
|
150
|
+
let(:company_name) { "Error the thing" }
|
151
|
+
|
152
|
+
it "can generate a valid mac" do
|
153
|
+
expect(described_class.run(args).mac).to eq(mac)
|
154
|
+
end
|
155
|
+
|
156
|
+
it "returns a url in the expected format" do
|
157
|
+
expected_response_url = "#{error_url}?#{query_string}"
|
158
|
+
|
159
|
+
expect(described_class.run(args).url).to eq(expected_response_url)
|
160
|
+
end
|
161
|
+
end
|
104
162
|
end
|
105
163
|
end
|
106
164
|
|
107
165
|
context "when the request comes from the waste-carriers-frontend" do
|
108
166
|
let(:success_url) { "http://example.com/your-registration/#{reference}/worldpay/success/54321/NEWREG?locale=en" }
|
109
167
|
let(:failure_url) { "http://example.com/your-registration/#{reference}/worldpay/failure/54321/NEWREG?locale=en" }
|
168
|
+
let(:pending_url) { "http://example.com/your-registration/#{reference}/worldpay/pending/54321/NEWREG?locale=en" }
|
169
|
+
let(:cancel_url) { "http://example.com/your-registration/#{reference}/worldpay/cancel/54321/NEWREG?locale=en" }
|
170
|
+
let(:error_url) { "http://example.com/your-registration/#{reference}/worldpay/error/54321/NEWREG?locale=en" }
|
110
171
|
|
111
172
|
context "and is valid" do
|
112
173
|
let(:relation) { double(:relation, first: registration) }
|
174
|
+
let(:mac_data) { [order_key, order_value, "GBP", payment_status, mac_secret] }
|
113
175
|
|
114
176
|
it "can extract the reference from the `success_url`" do
|
115
177
|
expect(described_class.run(args).reference).to eq(reference)
|
@@ -119,11 +181,11 @@ module DefraRubyMocks
|
|
119
181
|
expect(described_class.run(args).order_key).to eq(order_key)
|
120
182
|
end
|
121
183
|
|
122
|
-
it "can generate a valid mac" do
|
123
|
-
expect(described_class.run(args).mac).to eq(mac)
|
124
|
-
end
|
125
|
-
|
126
184
|
context "and is for a successful payment" do
|
185
|
+
it "can generate a valid mac" do
|
186
|
+
expect(described_class.run(args).mac).to eq(mac)
|
187
|
+
end
|
188
|
+
|
127
189
|
it "returns a url in the expected format" do
|
128
190
|
expected_response_url = "#{success_url}&#{query_string}"
|
129
191
|
|
@@ -135,6 +197,10 @@ module DefraRubyMocks
|
|
135
197
|
let(:payment_status) { :REFUSED }
|
136
198
|
let(:company_name) { "Reject for the thing" }
|
137
199
|
|
200
|
+
it "can generate a valid mac" do
|
201
|
+
expect(described_class.run(args).mac).to eq(mac)
|
202
|
+
end
|
203
|
+
|
138
204
|
it "returns a url in the expected format" do
|
139
205
|
expected_response_url = "#{failure_url}&#{query_string}"
|
140
206
|
|
@@ -143,12 +209,63 @@ module DefraRubyMocks
|
|
143
209
|
end
|
144
210
|
|
145
211
|
context "and is for a stuck payment" do
|
212
|
+
let(:payment_status) { :STUCK }
|
146
213
|
let(:company_name) { "Give me a stuck thing" }
|
147
214
|
|
215
|
+
it "can generate a valid mac" do
|
216
|
+
expect(described_class.run(args).mac).to eq(mac)
|
217
|
+
end
|
218
|
+
|
148
219
|
it "returns a status of :STUCK" do
|
149
220
|
expect(described_class.run(args).status).to eq(:STUCK)
|
150
221
|
end
|
151
222
|
end
|
223
|
+
|
224
|
+
context "and is for a pending payment" do
|
225
|
+
let(:payment_status) { :SENT_FOR_AUTHORISATION }
|
226
|
+
let(:company_name) { "Pending for the thing" }
|
227
|
+
|
228
|
+
it "can generate a valid mac" do
|
229
|
+
expect(described_class.run(args).mac).to eq(mac)
|
230
|
+
end
|
231
|
+
|
232
|
+
it "returns a url in the expected format" do
|
233
|
+
expected_response_url = "#{pending_url}&#{query_string}"
|
234
|
+
|
235
|
+
expect(described_class.run(args).url).to eq(expected_response_url)
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
239
|
+
context "and is for a cancelled payment" do
|
240
|
+
let(:payment_status) { :CANCELLED }
|
241
|
+
let(:company_name) { "Cancel the thing" }
|
242
|
+
let(:mac_data) { [order_key, order_value, "GBP", mac_secret] }
|
243
|
+
|
244
|
+
it "can generate a valid mac" do
|
245
|
+
expect(described_class.run(args).mac).to eq(mac)
|
246
|
+
end
|
247
|
+
|
248
|
+
it "returns a url in the expected format" do
|
249
|
+
expected_response_url = "#{cancel_url}&#{query_string}"
|
250
|
+
|
251
|
+
expect(described_class.run(args).url).to eq(expected_response_url)
|
252
|
+
end
|
253
|
+
end
|
254
|
+
|
255
|
+
context "and is for an errored payment" do
|
256
|
+
let(:payment_status) { :ERROR }
|
257
|
+
let(:company_name) { "Error the thing" }
|
258
|
+
|
259
|
+
it "can generate a valid mac" do
|
260
|
+
expect(described_class.run(args).mac).to eq(mac)
|
261
|
+
end
|
262
|
+
|
263
|
+
it "returns a url in the expected format" do
|
264
|
+
expected_response_url = "#{error_url}&#{query_string}"
|
265
|
+
|
266
|
+
expect(described_class.run(args).url).to eq(expected_response_url)
|
267
|
+
end
|
268
|
+
end
|
152
269
|
end
|
153
270
|
end
|
154
271
|
end
|