datatrans 5.1.0 → 5.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +30 -3
  3. data/.github/workflows/release.yml +1 -1
  4. data/.gitignore +1 -1
  5. data/.ruby-version +1 -1
  6. data/Appraisals +16 -8
  7. data/CHANGELOG.md +13 -0
  8. data/Gemfile +1 -0
  9. data/Gemfile.lock +151 -0
  10. data/README.markdown +70 -7
  11. data/Rakefile +2 -2
  12. data/datatrans.gemspec +20 -22
  13. data/gemfiles/rails_5_2.gemfile +2 -2
  14. data/gemfiles/rails_6_0.gemfile +2 -2
  15. data/gemfiles/rails_6_1.gemfile +2 -2
  16. data/gemfiles/rails_7_0.gemfile +2 -2
  17. data/gemfiles/rails_7_1.gemfile +12 -0
  18. data/lib/datatrans/common.rb +5 -5
  19. data/lib/datatrans/config.rb +26 -11
  20. data/lib/datatrans/json/transaction/authorize.rb +4 -42
  21. data/lib/datatrans/json/transaction/init.rb +61 -0
  22. data/lib/datatrans/json/transaction/merchant_authorize.rb +45 -0
  23. data/lib/datatrans/json/transaction/response.rb +7 -3
  24. data/lib/datatrans/json/transaction/settle.rb +41 -0
  25. data/lib/datatrans/json/transaction/status.rb +15 -9
  26. data/lib/datatrans/json/transaction.rb +30 -8
  27. data/lib/datatrans/version.rb +1 -1
  28. data/lib/datatrans/web/transaction/authorize.rb +46 -17
  29. data/lib/datatrans/web/transaction.rb +10 -4
  30. data/lib/datatrans/web/view_helper.rb +3 -1
  31. data/lib/datatrans/xml/transaction/authorize.rb +39 -19
  32. data/lib/datatrans/xml/transaction/capture.rb +29 -15
  33. data/lib/datatrans/xml/transaction/request.rb +10 -9
  34. data/lib/datatrans/xml/transaction/response.rb +4 -2
  35. data/lib/datatrans/xml/transaction/status.rb +41 -25
  36. data/lib/datatrans/xml/transaction/void.rb +30 -16
  37. data/lib/datatrans/xml/transaction.rb +18 -14
  38. data/lib/datatrans.rb +9 -9
  39. data/renovate.json +14 -0
  40. data/spec/common_spec.rb +6 -6
  41. data/spec/config_spec.rb +2 -2
  42. data/spec/json/authorize_spec.rb +35 -14
  43. data/spec/json/init_spec.rb +100 -0
  44. data/spec/json/merchant_authorize_spec.rb +97 -0
  45. data/spec/json/settle_spec.rb +55 -0
  46. data/spec/json/status_spec.rb +2 -2
  47. data/spec/spec_helper.rb +11 -11
  48. data/spec/web/init_spec.rb +157 -0
  49. data/spec/xml/capture_spec.rb +5 -5
  50. data/spec/xml/{authorize_spec.rb → init_spec.rb} +7 -7
  51. data/spec/xml/request_spec.rb +21 -22
  52. data/spec/xml/status_spec.rb +4 -4
  53. data/spec/xml/void_spec.rb +5 -5
  54. metadata +13 -4
  55. data/spec/web/authorize_spec.rb +0 -157
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe Datatrans::XML::Transaction::StatusRequest do
4
4
  before do
@@ -17,7 +17,7 @@ describe Datatrans::XML::Transaction::StatusRequest do
17
17
  "amount" => "500",
18
18
  "currency" => "CHF",
19
19
  "authorizationCode" => "891104057",
20
- "pmethod" => "ECA",
20
+ "pmethod" => "ECA"
21
21
  },
22
22
  "trxStatus" => "response"
23
23
  },
@@ -43,7 +43,7 @@ describe Datatrans::XML::Transaction::StatusRequest do
43
43
  "amount" => "",
44
44
  "currency" => "",
45
45
  "authorizationCode" => "",
46
- "pmethod" => "",
46
+ "pmethod" => ""
47
47
  },
48
48
  "trxStatus" => "response"
49
49
  },
@@ -55,7 +55,7 @@ describe Datatrans::XML::Transaction::StatusRequest do
55
55
  }
56
56
 
57
57
  @valid_params = {
58
- :transaction_id => '111013090000394044',
58
+ transaction_id: "111013090000394044"
59
59
  }
60
60
  end
61
61
 
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe Datatrans::XML::Transaction::VoidRequest do
4
4
  before do
@@ -54,10 +54,10 @@ describe Datatrans::XML::Transaction::VoidRequest do
54
54
  }
55
55
 
56
56
  @valid_params = {
57
- :refno => 'ABCDEF',
58
- :amount => 1000,
59
- :currency => 'CHF',
60
- :transaction_id => '110808143302868124'
57
+ refno: "ABCDEF",
58
+ amount: 1000,
59
+ currency: "CHF",
60
+ transaction_id: "110808143302868124"
61
61
  }
62
62
  end
63
63
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datatrans
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.0
4
+ version: 5.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Miesel
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2023-07-06 00:00:00.000000000 Z
14
+ date: 2024-01-31 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: httparty
@@ -154,6 +154,7 @@ files:
154
154
  - Appraisals
155
155
  - CHANGELOG.md
156
156
  - Gemfile
157
+ - Gemfile.lock
157
158
  - LICENSE
158
159
  - README.markdown
159
160
  - Rakefile
@@ -162,12 +163,16 @@ files:
162
163
  - gemfiles/rails_6_0.gemfile
163
164
  - gemfiles/rails_6_1.gemfile
164
165
  - gemfiles/rails_7_0.gemfile
166
+ - gemfiles/rails_7_1.gemfile
165
167
  - lib/datatrans.rb
166
168
  - lib/datatrans/common.rb
167
169
  - lib/datatrans/config.rb
168
170
  - lib/datatrans/json/transaction.rb
169
171
  - lib/datatrans/json/transaction/authorize.rb
172
+ - lib/datatrans/json/transaction/init.rb
173
+ - lib/datatrans/json/transaction/merchant_authorize.rb
170
174
  - lib/datatrans/json/transaction/response.rb
175
+ - lib/datatrans/json/transaction/settle.rb
171
176
  - lib/datatrans/json/transaction/status.rb
172
177
  - lib/datatrans/version.rb
173
178
  - lib/datatrans/web/transaction.rb
@@ -180,15 +185,19 @@ files:
180
185
  - lib/datatrans/xml/transaction/response.rb
181
186
  - lib/datatrans/xml/transaction/status.rb
182
187
  - lib/datatrans/xml/transaction/void.rb
188
+ - renovate.json
183
189
  - spec/common_spec.rb
184
190
  - spec/config_spec.rb
185
191
  - spec/json/authorize_spec.rb
192
+ - spec/json/init_spec.rb
193
+ - spec/json/merchant_authorize_spec.rb
194
+ - spec/json/settle_spec.rb
186
195
  - spec/json/status_spec.rb
187
196
  - spec/json/transaction_spec.rb
188
197
  - spec/spec_helper.rb
189
- - spec/web/authorize_spec.rb
190
- - spec/xml/authorize_spec.rb
198
+ - spec/web/init_spec.rb
191
199
  - spec/xml/capture_spec.rb
200
+ - spec/xml/init_spec.rb
192
201
  - spec/xml/request_spec.rb
193
202
  - spec/xml/status_spec.rb
194
203
  - spec/xml/void_spec.rb
@@ -1,157 +0,0 @@
1
- require 'action_controller'
2
- require 'spec_helper'
3
-
4
- describe Datatrans::Web::Transaction do
5
- before do
6
- @successful_response = {
7
- :status => "success",
8
- :returnCustomerCountry => "CHE",
9
- :sign => "95f3111123e628eab6469c636e0d3f06",
10
- :aliasCC => "70323122544311173",
11
- :maskedCC => "520000xxxxxx0007",
12
- :responseMessage => "Authorized",
13
- :useAlias => "yes",
14
- :expm => "12",
15
- :responseCode => "01",
16
- :sign2 => "a9571428be4d9d37b88988656984bfbf",
17
- :testOnly => "yes",
18
- :currency => "CHF",
19
- :amount => "1000",
20
- :hiddenMode => "yes",
21
- :expy => "15",
22
- :merchantId => "1100000000",
23
- :authorizationCode => "521029462",
24
- :uppTransactionId => "110808173520119430",
25
- :refno => "1",
26
- :uppMsgType => "web",
27
- :uppCustomerName => "",
28
- :pmethod => "ECA",
29
- :reqtype => "NOA",
30
- :uppCustomerEmail => "customer@email.com",
31
- :acqAuthorizationCode => "173520"
32
- }
33
-
34
- @successful_swisspost_response = @successful_response.merge({
35
- :pmethod => "PFC",
36
- :txtEp2TrxID => "7777777000000001",
37
- :responseMessage => "YellowPay transaction Ok"
38
- })
39
-
40
- @failed_response = {
41
- :status => "error",
42
- :returnCustomerCountry => "CHE",
43
- :sign => "95f3123246e628eab6469c636e0d3f06",
44
- :aliasCC => "70323122544311173",
45
- :maskedCC => "520000xxxxxx0007",
46
- :errorMessage => "declined",
47
- :useAlias => "yes",
48
- :expm => "12",
49
- :errorCode => "1403",
50
- :testOnly => "yes",
51
- :currency => "CHF",
52
- :amount => "1000",
53
- :hiddenMode => "yes",
54
- :expy => "14",
55
- :merchantId => "1100000000",
56
- :errorDetail => "Declined",
57
- :uppTransactionId => "110808173951050102",
58
- :refno => "1",
59
- :uppMsgType => "web",
60
- :uppCustomerName => "",
61
- :pmethod => "ECA",
62
- :reqtype => "NOA",
63
- :uppCustomerEmail => "customer@email.com"
64
- }
65
-
66
- @valid_params = {
67
- :refno => 'ABCDEF',
68
- :amount => 1000,
69
- :currency => 'CHF',
70
- :uppCustomerEmail => 'customer@email.com'
71
- # also params from view helper needed
72
- }
73
- end
74
-
75
- context "rails form helper" do
76
- before do
77
- @transaction = Datatrans::Web::Transaction.new(@datatrans, @valid_params)
78
-
79
- if Gem.loaded_specs['activesupport'].version >= Gem::Version.create('6.0')
80
- @view = ActionView::Base.new(ActionController::Base.view_paths, {}, {})
81
- else
82
- @view = ActionView::Base.new
83
- end
84
- end
85
-
86
- it 'should generate valid form field string' do
87
- if Gem.loaded_specs['activesupport'].version >= Gem::Version.create('6.0')
88
- expected_output = '<input type="hidden" name="merchantId" id="merchantId" value="1100000000" autocomplete="off" /><input type="hidden" name="hiddenMode" id="hiddenMode" value="yes" autocomplete="off" /><input type="hidden" name="reqtype" id="reqtype" value="NOA" autocomplete="off" /><input type="hidden" name="amount" id="amount" value="1000" autocomplete="off" /><input type="hidden" name="currency" id="currency" value="CHF" autocomplete="off" /><input type="hidden" name="useAlias" id="useAlias" value="yes" autocomplete="off" /><input type="hidden" name="sign" id="sign" value="0402fb3fba8c6fcb40df9b7756e7e637" autocomplete="off" /><input type="hidden" name="refno" id="refno" value="ABCDEF" autocomplete="off" /><input type="hidden" name="uppCustomerDetails" id="uppCustomerDetails" autocomplete="off" /><input type="hidden" name="uppCustomerEmail" id="uppCustomerEmail" value="customer@email.com" autocomplete="off" />'
89
- else
90
- expected_output = '<input type="hidden" name="merchantId" id="merchantId" value="1100000000" /><input type="hidden" name="hiddenMode" id="hiddenMode" value="yes" /><input type="hidden" name="reqtype" id="reqtype" value="NOA" /><input type="hidden" name="amount" id="amount" value="1000" /><input type="hidden" name="currency" id="currency" value="CHF" /><input type="hidden" name="useAlias" id="useAlias" value="yes" /><input type="hidden" name="sign" id="sign" value="0402fb3fba8c6fcb40df9b7756e7e637" /><input type="hidden" name="refno" id="refno" value="ABCDEF" /><input type="hidden" name="uppCustomerDetails" id="uppCustomerDetails" /><input type="hidden" name="uppCustomerEmail" id="uppCustomerEmail" value="customer@email.com" />'
91
- end
92
-
93
- expect(@view.datatrans_notification_request_hidden_fields(@datatrans, @transaction)).to eq expected_output
94
- end
95
- end
96
-
97
- context "successful response" do
98
- before do
99
- allow_any_instance_of(Datatrans::Web::Transaction::AuthorizeResponse).to receive(:params).and_return(@successful_response)
100
- end
101
-
102
- context "process" do
103
- it "handles a valid datatrans authorize response" do
104
- @transaction = Datatrans::Web::Transaction.new(@datatrans, @valid_params)
105
- expect(@transaction.authorize).to be true
106
- end
107
- end
108
- end
109
-
110
- context "successful response (swiss post)" do
111
- before do
112
- allow_any_instance_of(Datatrans::Web::Transaction::AuthorizeResponse).to receive(:params).and_return(@successful_swisspost_response)
113
- end
114
-
115
- context "process" do
116
- it "handles a valid datatrans authorize response" do
117
- @transaction = Datatrans::Web::Transaction.new(@datatrans, @valid_params)
118
- expect(@transaction.authorize).to be true
119
- end
120
- end
121
- end
122
-
123
- context "compromised response" do
124
- before do
125
- fake_response = @successful_response
126
- fake_response[:sign2] = 'invalid'
127
- allow_any_instance_of(Datatrans::Web::Transaction::AuthorizeResponse).to receive(:params).and_return(fake_response)
128
- @transaction = Datatrans::Web::Transaction.new(@datatrans, @valid_params)
129
- end
130
-
131
- it "raises an exception if sign2 is invalid" do
132
- expect {
133
- @transaction.authorize
134
- }.to raise_error(Datatrans::InvalidSignatureError)
135
- end
136
- end
137
-
138
- context "failed response" do
139
- before do
140
- allow_any_instance_of(Datatrans::Web::Transaction::AuthorizeResponse).to receive(:params).and_return(@failed_response)
141
- @transaction = Datatrans::Web::Transaction.new(@datatrans, @valid_params)
142
- end
143
-
144
- context "process" do
145
- it "handles a failed datatrans authorize response" do
146
- expect(@transaction.authorize).to be false
147
- end
148
-
149
- it "returns error details" do
150
- @transaction.authorize
151
- expect(@transaction.error_code.length).to be > 0
152
- expect(@transaction.error_message.length).to be > 0
153
- expect(@transaction.error_detail.length).to be > 0
154
- end
155
- end
156
- end
157
- end