defra_ruby_mocks 1.4.1 → 1.5.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.
@@ -1,83 +1,99 @@
1
1
  example_id | status | run_time |
2
2
  ------------------------------------------------------------------- | ------ | --------------- |
3
- ./spec/defra_ruby_mocks_spec.rb[1:1:1] | passed | 0.02254 seconds |
4
- ./spec/defra_ruby_mocks_spec.rb[1:2:1:1] | passed | 0.00022 seconds |
5
- ./spec/defra_ruby_mocks_spec.rb[1:2:2:1] | passed | 0.00565 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.00008 seconds |
9
- ./spec/lib/configuration_spec.rb[1:1:4:1] | passed | 0.00009 seconds |
3
+ ./spec/defra_ruby_mocks_spec.rb[1:1:1] | passed | 0.00949 seconds |
4
+ ./spec/defra_ruby_mocks_spec.rb[1:2:1:1] | passed | 0.00016 seconds |
5
+ ./spec/defra_ruby_mocks_spec.rb[1:2:2:1] | passed | 0.00015 seconds |
6
+ ./spec/lib/configuration_spec.rb[1:1:1:1] | passed | 0.0001 seconds |
7
+ ./spec/lib/configuration_spec.rb[1:1:2:1] | passed | 0.0001 seconds |
8
+ ./spec/lib/configuration_spec.rb[1:1:3:1] | passed | 0.00009 seconds |
9
+ ./spec/lib/configuration_spec.rb[1:1:4:1] | passed | 0.0001 seconds |
10
10
  ./spec/lib/configuration_spec.rb[1:2:1:1] | passed | 0.00009 seconds |
11
- ./spec/lib/configuration_spec.rb[1:2:2:1] | passed | 0.00009 seconds |
12
- ./spec/lib/configuration_spec.rb[1:2:3:1] | passed | 0.00011 seconds |
13
- ./spec/lib/configuration_spec.rb[1:2:4:1] | passed | 0.00236 seconds |
14
- ./spec/requests/company_spec.rb[1:1:1:1] | passed | 0.01096 seconds |
15
- ./spec/requests/company_spec.rb[1:1:2:1] | passed | 0.04303 seconds |
16
- ./spec/requests/company_spec.rb[1:1:3:1:1] | passed | 0.00435 seconds |
17
- ./spec/requests/company_spec.rb[1:1:3:2:1] | passed | 0.00458 seconds |
18
- ./spec/requests/company_spec.rb[1:2:1] | passed | 0.00311 seconds |
19
- ./spec/requests/worldpay_spec.rb[1:1:1:1:1:1] | passed | 0.02388 seconds |
20
- ./spec/requests/worldpay_spec.rb[1:1:1:1:2:1] | passed | 0.00636 seconds |
21
- ./spec/requests/worldpay_spec.rb[1:1:1:2:1:1] | passed | 0.01838 seconds |
22
- ./spec/requests/worldpay_spec.rb[1:1:2:1:1:1] | passed | 0.03425 seconds |
23
- ./spec/requests/worldpay_spec.rb[1:1:2:1:2:1] | passed | 0.04753 seconds |
24
- ./spec/requests/worldpay_spec.rb[1:1:2:2:1:1] | passed | 0.00465 seconds |
25
- ./spec/requests/worldpay_spec.rb[1:2:1:1] | passed | 0.0037 seconds |
26
- ./spec/requests/worldpay_spec.rb[1:2:2:1] | passed | 0.01137 seconds |
27
- ./spec/services/companies_house_service_spec.rb[1:1:1:1] | passed | 0.00017 seconds |
28
- ./spec/services/companies_house_service_spec.rb[1:1:2:1:1] | passed | 0.00011 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.00012 seconds |
11
+ ./spec/lib/configuration_spec.rb[1:2:2:1] | passed | 0.00115 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.0001 seconds |
14
+ ./spec/requests/company_spec.rb[1:1:1:1] | passed | 0.04773 seconds |
15
+ ./spec/requests/company_spec.rb[1:1:2:1] | passed | 0.00765 seconds |
16
+ ./spec/requests/company_spec.rb[1:1:3:1:1] | passed | 0.00364 seconds |
17
+ ./spec/requests/company_spec.rb[1:1:3:2:1] | passed | 0.00421 seconds |
18
+ ./spec/requests/company_spec.rb[1:2:1] | passed | 0.00804 seconds |
19
+ ./spec/requests/worldpay_spec.rb[1:1:1:1:1:1] | passed | 0.01734 seconds |
20
+ ./spec/requests/worldpay_spec.rb[1:1:1:1:2:1] | passed | 0.00482 seconds |
21
+ ./spec/requests/worldpay_spec.rb[1:1:1:2:1:1] | passed | 0.0217 seconds |
22
+ ./spec/requests/worldpay_spec.rb[1:1:2:1:1:1] | passed | 0.00433 seconds |
23
+ ./spec/requests/worldpay_spec.rb[1:1:2:1:2:1] | passed | 0.00844 seconds |
24
+ ./spec/requests/worldpay_spec.rb[1:1:2:2:1:1] | passed | 0.00496 seconds |
25
+ ./spec/requests/worldpay_spec.rb[1:2:1:1] | passed | 0.00303 seconds |
26
+ ./spec/requests/worldpay_spec.rb[1:2:2:1] | passed | 0.00199 seconds |
27
+ ./spec/services/companies_house_service_spec.rb[1:1:1:1] | passed | 0.00011 seconds |
28
+ ./spec/services/companies_house_service_spec.rb[1:1:2:1:1] | passed | 0.00009 seconds |
29
+ ./spec/services/companies_house_service_spec.rb[1:1:2:2:1] | passed | 0.00011 seconds |
30
+ ./spec/services/companies_house_service_spec.rb[1:1:2:3:1] | passed | 0.00013 seconds |
31
31
  ./spec/services/companies_house_service_spec.rb[1:1:2:4:1] | passed | 0.00009 seconds |
32
- ./spec/services/companies_house_service_spec.rb[1:1:2:5:1] | passed | 0.00009 seconds |
33
- ./spec/services/companies_house_service_spec.rb[1:1:2:6:1] | passed | 0.0001 seconds |
34
- ./spec/services/companies_house_service_spec.rb[1:1:2:7:1] | passed | 0.0001 seconds |
35
- ./spec/services/companies_house_service_spec.rb[1:1:2:8:1] | passed | 0.00009 seconds |
36
- ./spec/services/companies_house_service_spec.rb[1:1:2:9:1] | passed | 0.0001 seconds |
37
- ./spec/services/companies_house_service_spec.rb[1:1:3:1:1] | passed | 0.00009 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.00019 seconds |
40
- ./spec/services/worldpay_payment_service_spec.rb[1:1:2:1:1] | passed | 0.002 seconds |
41
- ./spec/services/worldpay_payment_service_spec.rb[1:1:2:1:2] | passed | 0.00135 seconds |
42
- ./spec/services/worldpay_payment_service_spec.rb[1:1:2:1:3] | passed | 0.00059 seconds |
43
- ./spec/services/worldpay_payment_service_spec.rb[1:1:2:1:4] | passed | 0.00101 seconds |
44
- ./spec/services/worldpay_payment_service_spec.rb[1:1:2:1:5:1] | passed | 0.00086 seconds |
45
- ./spec/services/worldpay_payment_service_spec.rb[1:1:2:1:5:2] | passed | 0.01732 seconds |
46
- ./spec/services/worldpay_payment_service_spec.rb[1:1:2:1:5:3] | passed | 0.00079 seconds |
47
- ./spec/services/worldpay_payment_service_spec.rb[1:1:2:1:6:1] | passed | 0.00094 seconds |
48
- ./spec/services/worldpay_payment_service_spec.rb[1:1:3:1] | passed | 0.00208 seconds |
49
- ./spec/services/worldpay_refund_service_spec.rb[1:1:1:1:1] | passed | 0.00063 seconds |
50
- ./spec/services/worldpay_refund_service_spec.rb[1:1:1:1:2] | passed | 0.00065 seconds |
51
- ./spec/services/worldpay_refund_service_spec.rb[1:1:1:1:3] | passed | 0.0006 seconds |
32
+ ./spec/services/companies_house_service_spec.rb[1:1:2:5:1] | passed | 0.00008 seconds |
33
+ ./spec/services/companies_house_service_spec.rb[1:1:2:6:1] | passed | 0.00008 seconds |
34
+ ./spec/services/companies_house_service_spec.rb[1:1:2:7:1] | passed | 0.00011 seconds |
35
+ ./spec/services/companies_house_service_spec.rb[1:1:2:8:1] | passed | 0.00012 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.0001 seconds |
38
+ ./spec/services/companies_house_service_spec.rb[1:1:3:2:1] | passed | 0.00015 seconds |
39
+ ./spec/services/worldpay_payment_service_spec.rb[1:1:1:1] | passed | 0.00014 seconds |
40
+ ./spec/services/worldpay_payment_service_spec.rb[1:1:2:1:1] | passed | 0.00123 seconds |
41
+ ./spec/services/worldpay_payment_service_spec.rb[1:1:2:1:2] | passed | 0.00171 seconds |
42
+ ./spec/services/worldpay_payment_service_spec.rb[1:1:2:1:3] | passed | 0.00041 seconds |
43
+ ./spec/services/worldpay_payment_service_spec.rb[1:1:2:1:4] | passed | 0.00052 seconds |
44
+ ./spec/services/worldpay_payment_service_spec.rb[1:1:2:1:5:1] | passed | 0.00039 seconds |
45
+ ./spec/services/worldpay_payment_service_spec.rb[1:1:2:1:5:2] | passed | 0.00051 seconds |
46
+ ./spec/services/worldpay_payment_service_spec.rb[1:1:2:1:5:3] | passed | 0.00046 seconds |
47
+ ./spec/services/worldpay_payment_service_spec.rb[1:1:2:1:6:1] | passed | 0.0005 seconds |
48
+ ./spec/services/worldpay_payment_service_spec.rb[1:1:3:1] | passed | 0.00192 seconds |
49
+ ./spec/services/worldpay_refund_service_spec.rb[1:1:1:1:1] | passed | 0.00072 seconds |
50
+ ./spec/services/worldpay_refund_service_spec.rb[1:1:1:1:2] | passed | 0.00049 seconds |
51
+ ./spec/services/worldpay_refund_service_spec.rb[1:1:1:1:3] | passed | 0.00047 seconds |
52
52
  ./spec/services/worldpay_refund_service_spec.rb[1:1:1:1:4] | passed | 0.00066 seconds |
53
- ./spec/services/worldpay_refund_service_spec.rb[1:1:1:1:5] | passed | 0.00218 seconds |
54
- ./spec/services/worldpay_refund_service_spec.rb[1:1:1:1:6] | passed | 0.00064 seconds |
55
- ./spec/services/worldpay_refund_service_spec.rb[1:1:1:1:7] | passed | 0.00061 seconds |
56
- ./spec/services/worldpay_refund_service_spec.rb[1:1:2:1] | passed | 0.01948 seconds |
57
- ./spec/services/worldpay_request_handler_service_spec.rb[1:1:1:1:1] | passed | 0.00125 seconds |
58
- ./spec/services/worldpay_request_handler_service_spec.rb[1:1:1:1:2] | passed | 0.00146 seconds |
59
- ./spec/services/worldpay_request_handler_service_spec.rb[1:1:1:2:1] | passed | 0.00086 seconds |
60
- ./spec/services/worldpay_request_handler_service_spec.rb[1:1:1:2:2] | passed | 0.00077 seconds |
61
- ./spec/services/worldpay_request_handler_service_spec.rb[1:1:1:3:1] | passed | 0.00141 seconds |
62
- ./spec/services/worldpay_resource_service_spec.rb[1:1:1:1] | passed | 0.00068 seconds |
63
- ./spec/services/worldpay_resource_service_spec.rb[1:1:1:2] | passed | 0.00062 seconds |
64
- ./spec/services/worldpay_resource_service_spec.rb[1:1:1:3] | passed | 0.00065 seconds |
65
- ./spec/services/worldpay_resource_service_spec.rb[1:1:1:4] | passed | 0.00056 seconds |
66
- ./spec/services/worldpay_resource_service_spec.rb[1:1:2:1] | passed | 0.00075 seconds |
67
- ./spec/services/worldpay_resource_service_spec.rb[1:1:2:2] | passed | 0.00067 seconds |
68
- ./spec/services/worldpay_resource_service_spec.rb[1:1:2:3] | passed | 0.00067 seconds |
69
- ./spec/services/worldpay_resource_service_spec.rb[1:1:2:4] | passed | 0.00064 seconds |
70
- ./spec/services/worldpay_resource_service_spec.rb[1:1:3:1] | passed | 0.05549 seconds |
71
- ./spec/services/worldpay_resource_service_spec.rb[1:1:4:1] | passed | 0.00428 seconds |
72
- ./spec/services/worldpay_response_service_spec.rb[1:1:1:1:1] | passed | 0.00066 seconds |
73
- ./spec/services/worldpay_response_service_spec.rb[1:1:1:1:2] | passed | 0.00055 seconds |
74
- ./spec/services/worldpay_response_service_spec.rb[1:1:1:1:3] | passed | 0.00058 seconds |
75
- ./spec/services/worldpay_response_service_spec.rb[1:1:1:1:4:1] | passed | 0.00059 seconds |
76
- ./spec/services/worldpay_response_service_spec.rb[1:1:1:1:5:1] | passed | 0.0006 seconds |
77
- ./spec/services/worldpay_response_service_spec.rb[1:1:1:1:6:1] | passed | 0.00057 seconds |
78
- ./spec/services/worldpay_response_service_spec.rb[1:1:2:1:1] | passed | 0.00061 seconds |
79
- ./spec/services/worldpay_response_service_spec.rb[1:1:2:1:2] | passed | 0.00059 seconds |
80
- ./spec/services/worldpay_response_service_spec.rb[1:1:2:1:3] | passed | 0.00059 seconds |
81
- ./spec/services/worldpay_response_service_spec.rb[1:1:2:1:4:1] | passed | 0.00072 seconds |
82
- ./spec/services/worldpay_response_service_spec.rb[1:1:2:1:5:1] | passed | 0.00291 seconds |
83
- ./spec/services/worldpay_response_service_spec.rb[1:1:2:1:6:1] | passed | 0.00091 seconds |
53
+ ./spec/services/worldpay_refund_service_spec.rb[1:1:1:1:5] | passed | 0.00065 seconds |
54
+ ./spec/services/worldpay_refund_service_spec.rb[1:1:1:1:6] | passed | 0.00056 seconds |
55
+ ./spec/services/worldpay_refund_service_spec.rb[1:1:1:1:7] | passed | 0.00066 seconds |
56
+ ./spec/services/worldpay_refund_service_spec.rb[1:1:2:1] | passed | 0.00215 seconds |
57
+ ./spec/services/worldpay_request_handler_service_spec.rb[1:1:1:1:1] | passed | 0.00095 seconds |
58
+ ./spec/services/worldpay_request_handler_service_spec.rb[1:1:1:1:2] | passed | 0.00093 seconds |
59
+ ./spec/services/worldpay_request_handler_service_spec.rb[1:1:1:2:1] | passed | 0.02227 seconds |
60
+ ./spec/services/worldpay_request_handler_service_spec.rb[1:1:1:2:2] | passed | 0.00086 seconds |
61
+ ./spec/services/worldpay_request_handler_service_spec.rb[1:1:1:3:1] | passed | 0.00052 seconds |
62
+ ./spec/services/worldpay_resource_service_spec.rb[1:1:1:1] | passed | 0.00064 seconds |
63
+ ./spec/services/worldpay_resource_service_spec.rb[1:1:1:2] | passed | 0.00057 seconds |
64
+ ./spec/services/worldpay_resource_service_spec.rb[1:1:1:3] | passed | 0.00061 seconds |
65
+ ./spec/services/worldpay_resource_service_spec.rb[1:1:1:4] | passed | 0.00064 seconds |
66
+ ./spec/services/worldpay_resource_service_spec.rb[1:1:2:1] | passed | 0.0007 seconds |
67
+ ./spec/services/worldpay_resource_service_spec.rb[1:1:2:2] | passed | 0.00063 seconds |
68
+ ./spec/services/worldpay_resource_service_spec.rb[1:1:2:3] | passed | 0.0007 seconds |
69
+ ./spec/services/worldpay_resource_service_spec.rb[1:1:2:4] | passed | 0.00066 seconds |
70
+ ./spec/services/worldpay_resource_service_spec.rb[1:1:3:1] | passed | 0.0028 seconds |
71
+ ./spec/services/worldpay_resource_service_spec.rb[1:1:4:1] | passed | 0.00066 seconds |
72
+ ./spec/services/worldpay_response_service_spec.rb[1:1:1:1:1] | passed | 0.0006 seconds |
73
+ ./spec/services/worldpay_response_service_spec.rb[1:1:1:1:2] | passed | 0.00056 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.00052 seconds |
76
+ ./spec/services/worldpay_response_service_spec.rb[1:1:1:1:4:1] | passed | 0.00054 seconds |
77
+ ./spec/services/worldpay_response_service_spec.rb[1:1:1:1:4:2] | passed | 0.00057 seconds |
78
+ ./spec/services/worldpay_response_service_spec.rb[1:1:1:1:5:1] | passed | 0.00041 seconds |
79
+ ./spec/services/worldpay_response_service_spec.rb[1:1:1:1:5:2] | passed | 0.00046 seconds |
80
+ ./spec/services/worldpay_response_service_spec.rb[1:1:1:1:6:1] | passed | 0.0006 seconds |
81
+ ./spec/services/worldpay_response_service_spec.rb[1:1:1:1:6:2] | passed | 0.00063 seconds |
82
+ ./spec/services/worldpay_response_service_spec.rb[1:1:1:1:7:1] | passed | 0.00055 seconds |
83
+ ./spec/services/worldpay_response_service_spec.rb[1:1:1:1:7:2] | passed | 0.00062 seconds |
84
+ ./spec/services/worldpay_response_service_spec.rb[1:1:1:1:8:1] | passed | 0.00058 seconds |
85
+ ./spec/services/worldpay_response_service_spec.rb[1:1:1:1:8:2] | passed | 0.00064 seconds |
86
+ ./spec/services/worldpay_response_service_spec.rb[1:1:2:1:1] | passed | 0.00072 seconds |
87
+ ./spec/services/worldpay_response_service_spec.rb[1:1:2:1:2] | passed | 0.00056 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.00059 seconds |
90
+ ./spec/services/worldpay_response_service_spec.rb[1:1:2:1:4:1] | passed | 0.00056 seconds |
91
+ ./spec/services/worldpay_response_service_spec.rb[1:1:2:1:4:2] | passed | 0.00056 seconds |
92
+ ./spec/services/worldpay_response_service_spec.rb[1:1:2:1:5:1] | passed | 0.00069 seconds |
93
+ ./spec/services/worldpay_response_service_spec.rb[1:1:2:1:5:2] | passed | 0.00055 seconds |
94
+ ./spec/services/worldpay_response_service_spec.rb[1:1:2:1:6:1] | passed | 0.00058 seconds |
95
+ ./spec/services/worldpay_response_service_spec.rb[1:1:2:1:6:2] | passed | 0.00074 seconds |
96
+ ./spec/services/worldpay_response_service_spec.rb[1:1:2:1:7:1] | passed | 0.00063 seconds |
97
+ ./spec/services/worldpay_response_service_spec.rb[1:1:2:1:7:2] | passed | 0.00058 seconds |
98
+ ./spec/services/worldpay_response_service_spec.rb[1:1:2:1:8:1] | passed | 0.00064 seconds |
99
+ ./spec/services/worldpay_response_service_spec.rb[1:1:2:1:8:2] | passed | 0.00063 seconds |
@@ -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) { "/defra_ruby_mocks/worldpay/dispatcher?successURL=#{CGI.escape(success_url)}" }
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) { allow(WorldpayResponseService).to receive(:run) { service_response } }
80
-
81
- let(:success_url) { "http://example.com/fo/12345/worldpay/success" }
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) 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
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) { { success_url: success_url, failure_url: failure_url } }
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