wirecard 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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