wirecard 0.0.1 → 0.0.2

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 (48) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/README.md +2 -0
  4. data/README.rdoc +3 -0
  5. data/circle.yml +7 -0
  6. data/lib/wirecard.rb +22 -0
  7. data/lib/wirecard/backend/approve_reversal.rb +9 -0
  8. data/lib/wirecard/backend/base.rb +20 -0
  9. data/lib/wirecard/backend/deposit.rb +9 -0
  10. data/lib/wirecard/backend/deposit_reversal.rb +9 -0
  11. data/lib/wirecard/backend/generate_order_number.rb +12 -0
  12. data/lib/wirecard/backend/get_order_details.rb +9 -0
  13. data/lib/wirecard/backend/recur_payment.rb +9 -0
  14. data/lib/wirecard/backend/refund.rb +9 -0
  15. data/lib/wirecard/backend/refund_reversal.rb +9 -0
  16. data/lib/wirecard/backend/transfer_fund/base.rb +15 -0
  17. data/lib/wirecard/backend/transfer_fund/existing_order.rb +11 -0
  18. data/lib/wirecard/base.rb +26 -11
  19. data/lib/wirecard/callback.rb +3 -8
  20. data/lib/wirecard/configuration.rb +4 -0
  21. data/lib/wirecard/data_storage/init.rb +1 -3
  22. data/lib/wirecard/fingerprint/base.rb +13 -2
  23. data/lib/wirecard/payment_process/init.rb +11 -0
  24. data/lib/wirecard/request.rb +2 -6
  25. data/lib/wirecard/response.rb +0 -4
  26. data/lib/wirecard/version.rb +1 -1
  27. data/spec/spec_helper.rb +10 -1
  28. data/spec/unit_tests/backend/approve_reversal_spec.rb +54 -0
  29. data/spec/unit_tests/backend/deposit_reversal_spec.rb +91 -0
  30. data/spec/unit_tests/backend/deposit_spec.rb +79 -0
  31. data/spec/unit_tests/backend/generate_order_number_spec.rb +37 -0
  32. data/spec/unit_tests/backend/get_order_details_spec.rb +233 -0
  33. data/spec/unit_tests/backend/recur_payment_spec.rb +86 -0
  34. data/spec/unit_tests/backend/refund_reversal.rb +60 -0
  35. data/spec/unit_tests/backend/refund_spec.rb +66 -0
  36. data/spec/unit_tests/backend/transfer_fund/existing_order_spec.rb +88 -0
  37. data/spec/unit_tests/callback_spec.rb +101 -0
  38. data/spec/unit_tests/data_storage/init_spec.rb +39 -25
  39. data/spec/unit_tests/data_storage/read_spec.rb +47 -0
  40. data/spec/unit_tests/fingerprint/sha_512_spec.rb +69 -0
  41. data/spec/unit_tests/payment_process/init_spec.rb +94 -0
  42. data/spec/unit_tests/support/shared_context.rb +235 -0
  43. data/spec/unit_tests/support/shared_examples.rb +7 -33
  44. data/spec/unit_tests/support/webserver.rb +29 -0
  45. data/spec/wirecard_spec.rb +133 -133
  46. data/wirecard.gemspec +5 -0
  47. metadata +115 -4
  48. data/spec/unit_tests/base_shared.rb +0 -34
@@ -0,0 +1,29 @@
1
+ require "webrick"
2
+
3
+ class Webserver
4
+ class MyServlet < WEBrick::HTTPServlet::AbstractServlet
5
+ def do_POST (request, response)
6
+ case request.path
7
+ when "/confirm"
8
+ result = request.query
9
+ else
10
+ result = "No such page. 404!"
11
+ end
12
+ response.body = result.to_s + "\n"
13
+ end
14
+ end
15
+
16
+ def self.server
17
+ @@server ||= WEBrick::HTTPServer.new(Port: 1234)
18
+ @@server.mount('/', MyServlet)
19
+ @@server
20
+ end
21
+
22
+ def self.start
23
+ server.start
24
+ end
25
+
26
+ def self.stop
27
+ server.shutdown
28
+ end
29
+ end
@@ -1,133 +1,133 @@
1
- require 'spec_helper'
2
-
3
- describe Wirecard do
4
-
5
- before do
6
- Wirecard.configure do |config|
7
- config.host = 'checkout.wirecard.com'
8
- config.endpoint = 'https://checkout.wirecard.com/seamless'
9
- config.customer_id = 'D200001'
10
- config.shop_id = 'qmore'
11
- config.secret = 'B8AKTPWBRMNBV455FG6M2DANE99WU2'
12
- config.success_url = 'http://localhost.success.url'
13
- config.failure_url = 'http://localhost.failure.url'
14
- config.cancel_url = 'http://localhost.cancel.url'
15
- config.service_url = 'http://localhost.service.url'
16
- config.confirm_url = 'http://localhost.confirm.url'
17
- config.return_url = 'http://localhost.return.url'
18
- config.language = 'en'
19
- end
20
- end
21
-
22
- describe 'data storage' do
23
- let(:storage_id) { 'd738d62b67ea9719f80530e5097beada' }
24
-
25
- describe 'init' do
26
- subject { Wirecard::DataStorage::Init.new(order_ident: '123').post }
27
-
28
- #it { is_expected.to eq(storage_id: storage_id, javascript_url: 'https://checkout.wirecard.com/seamless/dataStorage/js/D200001/qmore/d738d62b67ea9719f80530e5097beada/dataStorage.js') }
29
- end
30
-
31
- describe 'read' do
32
- subject { Wirecard::DataStorage::Read.new(storage_id: storage_id).post }
33
-
34
- #it { is_expected.to eq({storage_id: storage_id, payment_informations: '0' }) }
35
- end
36
- end
37
-
38
- describe 'payment process' do
39
- let(:params) { {
40
- payment_type: 'CCARD',
41
- amount: '1000',
42
- consumer_ip_address: '127.0.0.1',
43
- consumer_user_agent: 'some agent',
44
- currency: 'EUR',
45
- language: 'de',
46
- order_description: 'sdfdg'
47
- } }
48
-
49
- describe 'init' do
50
- subject { Wirecard::PaymentProcess::Init.new(params).post }
51
-
52
- #it { expect(subject.keys).to include(:redirect_url) }
53
- end
54
-
55
- describe 'callback' do
56
- subject { Wirecard::Callback.new(response_params).to_hash }
57
-
58
- let(:response_params) do
59
- {
60
- "amount" => "1000",
61
- "currency" => "EUR",
62
- "paymentType" => "CCARD",
63
- "financialInstitution" => "Visa",
64
- "language" => "de",
65
- "orderNumber" => "5028575",
66
- "paymentState" => "SUCCESS",
67
- "authenticated" => "No",
68
- "anonymousPan" => "0004",
69
- "expiry" => "03/2018",
70
- "cardholder" => "sdg",
71
- "maskedPan" => "940000******0004",
72
- "gatewayReferenceNumber" => "DGW_5028575_RN",
73
- "gatewayContractNumber" => "DemoContractNumber123",
74
- "avsResponseCode" => "X",
75
- "avsResponseMessage" => "Demo AVS ResultMessage",
76
- "avsProviderResultCode" => "X",
77
- "avsProviderResultMessage" => "Demo AVS ProviderResultMessage",
78
- "responseFingerprintOrder" => "amount,currency,paymentType,financialInstitution,language,orderNumber,paymentState,authenticated,anonymousPan,expiry,cardholder,maskedPan,gatewayReferenceNumber,gatewayContractNumber,avsResponseCode,avsResponseMessage,avsProviderResultCode,avsProviderResultMessage,secret,responseFingerprintOrder",
79
- "responseFingerprint" => response_fingerprint
80
- }
81
- end
82
-
83
- context 'when response fingerprint is valid' do
84
- let(:response_fingerprint) { "42c937f7712b69210839c8d149bb17a352e04761eb08d67d28b2319b4a254c923b55cd6270c5d03f32cc9613dc53924c52e7a0dd7ad2139a5334a15cb4763e97" }
85
-
86
- context 'when response contains only fingerprinted params' do
87
- let(:parsed_response_params) do
88
- {
89
- amount: "1000",
90
- currency: "EUR",
91
- payment_type: "CCARD",
92
- financial_institution: "Visa",
93
- language: "de",
94
- order_number: "5028575",
95
- payment_state: "SUCCESS",
96
- authenticated: "No",
97
- anonymous_pan: "0004",
98
- expiry: "03/2018",
99
- cardholder: "sdg",
100
- masked_pan: "940000******0004",
101
- gateway_reference_number: "DGW_5028575_RN",
102
- gateway_contract_number: "DemoContractNumber123",
103
- avs_response_code: "X",
104
- avs_response_message: "Demo AVS ResultMessage",
105
- avs_provider_result_code: "X",
106
- avs_provider_result_message: "Demo AVS ProviderResultMessage",
107
- response_fingerprint_order: "amount,currency,paymentType,financialInstitution,language,orderNumber,paymentState,authenticated,anonymousPan,expiry,cardholder,maskedPan,gatewayReferenceNumber,gatewayContractNumber,avsResponseCode,avsResponseMessage,avsProviderResultCode,avsProviderResultMessage,secret,responseFingerprintOrder",
108
- response_fingerprint: response_fingerprint
109
- }
110
- end
111
-
112
- #it { is_expected.to eq(parsed_response_params) }
113
- end
114
-
115
- context 'when response contains unfingerprinted params' do
116
- subject { Wirecard::Callback.new(response_params.merge(other_params)).to_hash }
117
- let(:other_params) { {
118
- "parameter_key" => "parameter_value"
119
- } }
120
-
121
- #it { is_expected.to raise_error(ArgumentError) } TODO: get this to work...
122
- end
123
- end
124
-
125
- context 'when response fingerprint is invalid' do
126
- let(:response_fingerprint) { "invalid fingerprint" }
127
-
128
- #it { is_expected.to be nil }
129
- end
130
-
131
- end
132
- end
133
- end
1
+ # require 'spec_helper'
2
+ #
3
+ # describe Wirecard do
4
+ #
5
+ # before do
6
+ # Wirecard.configure do |config|
7
+ # config.host = 'checkout.wirecard.com'
8
+ # config.endpoint = 'https://checkout.wirecard.com/seamless'
9
+ # config.customer_id = 'D200001'
10
+ # config.shop_id = 'qmore'
11
+ # config.secret = 'B8AKTPWBRMNBV455FG6M2DANE99WU2'
12
+ # config.success_url = 'http://localhost.success.url'
13
+ # config.failure_url = 'http://localhost.failure.url'
14
+ # config.cancel_url = 'http://localhost.cancel.url'
15
+ # config.service_url = 'http://localhost.service.url'
16
+ # config.confirm_url = 'http://localhost.confirm.url'
17
+ # config.return_url = 'http://localhost.return.url'
18
+ # config.language = 'en'
19
+ # end
20
+ # end
21
+ #
22
+ # describe 'data storage' do
23
+ # let(:storage_id) { 'd738d62b67ea9719f80530e5097beada' }
24
+ #
25
+ # describe 'init' do
26
+ # subject { Wirecard::DataStorage::Init.new(order_ident: '123').post }
27
+ #
28
+ # #it { is_expected.to eq(storage_id: storage_id, javascript_url: 'https://checkout.wirecard.com/seamless/dataStorage/js/D200001/qmore/d738d62b67ea9719f80530e5097beada/dataStorage.js') }
29
+ # end
30
+ #
31
+ # describe 'read' do
32
+ # subject { Wirecard::DataStorage::Read.new(storage_id: storage_id).post }
33
+ #
34
+ # #it { is_expected.to eq({storage_id: storage_id, payment_informations: '0' }) }
35
+ # end
36
+ # end
37
+ #
38
+ # describe 'payment process' do
39
+ # let(:params) { {
40
+ # payment_type: 'CCARD',
41
+ # amount: '1000',
42
+ # consumer_ip_address: '127.0.0.1',
43
+ # consumer_user_agent: 'some agent',
44
+ # currency: 'EUR',
45
+ # language: 'de',
46
+ # order_description: 'sdfdg'
47
+ # } }
48
+ #
49
+ # describe 'init' do
50
+ # subject { Wirecard::PaymentProcess::Init.new(params).post }
51
+ #
52
+ # #it { expect(subject.keys).to include(:redirect_url) }
53
+ # end
54
+ #
55
+ # describe 'callback' do
56
+ # subject { Wirecard::Callback.new(response_params).to_hash }
57
+ #
58
+ # let(:response_params) do
59
+ # {
60
+ # "amount" => "1000",
61
+ # "currency" => "EUR",
62
+ # "paymentType" => "CCARD",
63
+ # "financialInstitution" => "Visa",
64
+ # "language" => "de",
65
+ # "orderNumber" => "5028575",
66
+ # "paymentState" => "SUCCESS",
67
+ # "authenticated" => "No",
68
+ # "anonymousPan" => "0004",
69
+ # "expiry" => "03/2018",
70
+ # "cardholder" => "sdg",
71
+ # "maskedPan" => "940000******0004",
72
+ # "gatewayReferenceNumber" => "DGW_5028575_RN",
73
+ # "gatewayContractNumber" => "DemoContractNumber123",
74
+ # "avsResponseCode" => "X",
75
+ # "avsResponseMessage" => "Demo AVS ResultMessage",
76
+ # "avsProviderResultCode" => "X",
77
+ # "avsProviderResultMessage" => "Demo AVS ProviderResultMessage",
78
+ # "responseFingerprintOrder" => "amount,currency,paymentType,financialInstitution,language,orderNumber,paymentState,authenticated,anonymousPan,expiry,cardholder,maskedPan,gatewayReferenceNumber,gatewayContractNumber,avsResponseCode,avsResponseMessage,avsProviderResultCode,avsProviderResultMessage,secret,responseFingerprintOrder",
79
+ # "responseFingerprint" => response_fingerprint
80
+ # }
81
+ # end
82
+ #
83
+ # context 'when response fingerprint is valid' do
84
+ # let(:response_fingerprint) { "42c937f7712b69210839c8d149bb17a352e04761eb08d67d28b2319b4a254c923b55cd6270c5d03f32cc9613dc53924c52e7a0dd7ad2139a5334a15cb4763e97" }
85
+ #
86
+ # context 'when response contains only fingerprinted params' do
87
+ # let(:parsed_response_params) do
88
+ # {
89
+ # amount: "1000",
90
+ # currency: "EUR",
91
+ # payment_type: "CCARD",
92
+ # financial_institution: "Visa",
93
+ # language: "de",
94
+ # order_number: "5028575",
95
+ # payment_state: "SUCCESS",
96
+ # authenticated: "No",
97
+ # anonymous_pan: "0004",
98
+ # expiry: "03/2018",
99
+ # cardholder: "sdg",
100
+ # masked_pan: "940000******0004",
101
+ # gateway_reference_number: "DGW_5028575_RN",
102
+ # gateway_contract_number: "DemoContractNumber123",
103
+ # avs_response_code: "X",
104
+ # avs_response_message: "Demo AVS ResultMessage",
105
+ # avs_provider_result_code: "X",
106
+ # avs_provider_result_message: "Demo AVS ProviderResultMessage",
107
+ # response_fingerprint_order: "amount,currency,paymentType,financialInstitution,language,orderNumber,paymentState,authenticated,anonymousPan,expiry,cardholder,maskedPan,gatewayReferenceNumber,gatewayContractNumber,avsResponseCode,avsResponseMessage,avsProviderResultCode,avsProviderResultMessage,secret,responseFingerprintOrder",
108
+ # response_fingerprint: response_fingerprint
109
+ # }
110
+ # end
111
+ #
112
+ # #it { is_expected.to eq(parsed_response_params) }
113
+ # end
114
+ #
115
+ # context 'when response contains unfingerprinted params' do
116
+ # subject { Wirecard::Callback.new(response_params.merge(other_params)).to_hash }
117
+ # let(:other_params) { {
118
+ # "parameter_key" => "parameter_value"
119
+ # } }
120
+ #
121
+ # #it { is_expected.to raise_error(ArgumentError) } TODO: get this to work...
122
+ # end
123
+ # end
124
+ #
125
+ # context 'when response fingerprint is invalid' do
126
+ # let(:response_fingerprint) { "invalid fingerprint" }
127
+ #
128
+ # #it { is_expected.to be nil }
129
+ # end
130
+ #
131
+ # end
132
+ # end
133
+ # end
@@ -21,5 +21,10 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "bundler", "~> 1.7"
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
23
  spec.add_development_dependency "rspec"
24
+ spec.add_development_dependency "webmock"
25
+ spec.add_development_dependency "codeclimate-test-reporter"
26
+ spec.add_development_dependency "dotenv"
27
+ spec.add_development_dependency "simplecov"
28
+ spec.add_development_dependency "coveralls"
24
29
  spec.add_development_dependency "pry"
25
30
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wirecard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dominic Breuker
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-07-28 00:00:00.000000000 Z
12
+ date: 2015-08-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -53,6 +53,76 @@ dependencies:
53
53
  - - '>='
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: webmock
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: codeclimate-test-reporter
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: dotenv
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - '>='
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: simplecov
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - '>='
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: coveralls
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
56
126
  - !ruby/object:Gem::Dependency
57
127
  name: pry
58
128
  requirement: !ruby/object:Gem::Requirement
@@ -81,8 +151,21 @@ files:
81
151
  - Gemfile
82
152
  - LICENSE.txt
83
153
  - README.md
154
+ - README.rdoc
84
155
  - Rakefile
156
+ - circle.yml
85
157
  - lib/wirecard.rb
158
+ - lib/wirecard/backend/approve_reversal.rb
159
+ - lib/wirecard/backend/base.rb
160
+ - lib/wirecard/backend/deposit.rb
161
+ - lib/wirecard/backend/deposit_reversal.rb
162
+ - lib/wirecard/backend/generate_order_number.rb
163
+ - lib/wirecard/backend/get_order_details.rb
164
+ - lib/wirecard/backend/recur_payment.rb
165
+ - lib/wirecard/backend/refund.rb
166
+ - lib/wirecard/backend/refund_reversal.rb
167
+ - lib/wirecard/backend/transfer_fund/base.rb
168
+ - lib/wirecard/backend/transfer_fund/existing_order.rb
86
169
  - lib/wirecard/base.rb
87
170
  - lib/wirecard/callback.rb
88
171
  - lib/wirecard/configuration.rb
@@ -96,9 +179,23 @@ files:
96
179
  - lib/wirecard/response.rb
97
180
  - lib/wirecard/version.rb
98
181
  - spec/spec_helper.rb
99
- - spec/unit_tests/base_shared.rb
182
+ - spec/unit_tests/backend/approve_reversal_spec.rb
183
+ - spec/unit_tests/backend/deposit_reversal_spec.rb
184
+ - spec/unit_tests/backend/deposit_spec.rb
185
+ - spec/unit_tests/backend/generate_order_number_spec.rb
186
+ - spec/unit_tests/backend/get_order_details_spec.rb
187
+ - spec/unit_tests/backend/recur_payment_spec.rb
188
+ - spec/unit_tests/backend/refund_reversal.rb
189
+ - spec/unit_tests/backend/refund_spec.rb
190
+ - spec/unit_tests/backend/transfer_fund/existing_order_spec.rb
191
+ - spec/unit_tests/callback_spec.rb
100
192
  - spec/unit_tests/data_storage/init_spec.rb
193
+ - spec/unit_tests/data_storage/read_spec.rb
194
+ - spec/unit_tests/fingerprint/sha_512_spec.rb
195
+ - spec/unit_tests/payment_process/init_spec.rb
196
+ - spec/unit_tests/support/shared_context.rb
101
197
  - spec/unit_tests/support/shared_examples.rb
198
+ - spec/unit_tests/support/webserver.rb
102
199
  - spec/wirecard_spec.rb
103
200
  - wirecard.gemspec
104
201
  homepage: ''
@@ -127,7 +224,21 @@ specification_version: 4
127
224
  summary: Wirecard API wrapper
128
225
  test_files:
129
226
  - spec/spec_helper.rb
130
- - spec/unit_tests/base_shared.rb
227
+ - spec/unit_tests/backend/approve_reversal_spec.rb
228
+ - spec/unit_tests/backend/deposit_reversal_spec.rb
229
+ - spec/unit_tests/backend/deposit_spec.rb
230
+ - spec/unit_tests/backend/generate_order_number_spec.rb
231
+ - spec/unit_tests/backend/get_order_details_spec.rb
232
+ - spec/unit_tests/backend/recur_payment_spec.rb
233
+ - spec/unit_tests/backend/refund_reversal.rb
234
+ - spec/unit_tests/backend/refund_spec.rb
235
+ - spec/unit_tests/backend/transfer_fund/existing_order_spec.rb
236
+ - spec/unit_tests/callback_spec.rb
131
237
  - spec/unit_tests/data_storage/init_spec.rb
238
+ - spec/unit_tests/data_storage/read_spec.rb
239
+ - spec/unit_tests/fingerprint/sha_512_spec.rb
240
+ - spec/unit_tests/payment_process/init_spec.rb
241
+ - spec/unit_tests/support/shared_context.rb
132
242
  - spec/unit_tests/support/shared_examples.rb
243
+ - spec/unit_tests/support/webserver.rb
133
244
  - spec/wirecard_spec.rb