worldnet_tps 0.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.
Files changed (52) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/.rvmrc +1 -0
  4. data/.travis.yml +6 -0
  5. data/Gemfile +9 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +70 -0
  8. data/Rakefile +6 -0
  9. data/lib/worldnet_tps.rb +12 -0
  10. data/lib/worldnet_tps/const.rb +42 -0
  11. data/lib/worldnet_tps/gateway.rb +71 -0
  12. data/lib/worldnet_tps/gateway.xsd +1909 -0
  13. data/lib/worldnet_tps/request/base.rb +107 -0
  14. data/lib/worldnet_tps/request/payment.rb +89 -0
  15. data/lib/worldnet_tps/request/refund.rb +59 -0
  16. data/lib/worldnet_tps/request/secure_card/registration.rb +71 -0
  17. data/lib/worldnet_tps/request/secure_card/removal.rb +46 -0
  18. data/lib/worldnet_tps/request/secure_card/search.rb +52 -0
  19. data/lib/worldnet_tps/response/error.rb +18 -0
  20. data/lib/worldnet_tps/response/invalid_hash.rb +21 -0
  21. data/lib/worldnet_tps/response/success.rb +25 -0
  22. data/lib/worldnet_tps/version.rb +3 -0
  23. data/lib/worldnet_tps/ws_object.rb +76 -0
  24. data/lib/worldnet_tps/xsd.rb +27 -0
  25. data/spec/fixtures/vcr_cassettes/payment/credit_card/failed.yml +60 -0
  26. data/spec/fixtures/vcr_cassettes/payment/credit_card/success.yml +59 -0
  27. data/spec/fixtures/vcr_cassettes/payment/secure_card/failed.yml +57 -0
  28. data/spec/fixtures/vcr_cassettes/payment/secure_card/success.yml +56 -0
  29. data/spec/fixtures/vcr_cassettes/refund/order_id/failed.yml +47 -0
  30. data/spec/fixtures/vcr_cassettes/refund/order_id/success.yml +46 -0
  31. data/spec/fixtures/vcr_cassettes/refund/unique_ref/failed.yml +47 -0
  32. data/spec/fixtures/vcr_cassettes/refund/unique_ref/success.yml +46 -0
  33. data/spec/fixtures/vcr_cassettes/secure_card/registration/registrarion_failed.yml +49 -0
  34. data/spec/fixtures/vcr_cassettes/secure_card/registration/registration_failed.yml +49 -0
  35. data/spec/fixtures/vcr_cassettes/secure_card/registration/registration_success.yml +48 -0
  36. data/spec/fixtures/vcr_cassettes/secure_card/registration/update_failed.yml +49 -0
  37. data/spec/fixtures/vcr_cassettes/secure_card/registration/update_success.yml +48 -0
  38. data/spec/fixtures/vcr_cassettes/secure_card/registration/update_success_success.yml +48 -0
  39. data/spec/fixtures/vcr_cassettes/secure_card/removal/failed.yml +45 -0
  40. data/spec/fixtures/vcr_cassettes/secure_card/removal/success.yml +44 -0
  41. data/spec/fixtures/vcr_cassettes/secure_card/search/failed.yml +44 -0
  42. data/spec/fixtures/vcr_cassettes/secure_card/search/success.yml +44 -0
  43. data/spec/gateway_spec.rb +42 -0
  44. data/spec/payment_spec.rb +117 -0
  45. data/spec/refund_spec.rb +95 -0
  46. data/spec/secure_card/registration_spec.rb +103 -0
  47. data/spec/secure_card/removal_spec.rb +57 -0
  48. data/spec/secure_card/search_spec.rb +58 -0
  49. data/spec/spec_helper.rb +58 -0
  50. data/spec/xsd_spec.rb +30 -0
  51. data/worldnet_tps.gemspec +28 -0
  52. metadata +205 -0
@@ -0,0 +1,57 @@
1
+ require 'spec_helper'
2
+
3
+ describe WorldnetTps::Request::SecureCard::Removal do
4
+
5
+
6
+ let(:vcr_cassette) { 'secure_card/removal/success' }
7
+
8
+
9
+ let(:merchant_ref) { 'worldnet_tps.gem' }
10
+ let(:operation) do
11
+ gateway.secure_card_removal(merchant_ref, '2967539209767734')
12
+ end
13
+
14
+ it 'should be valid object' do
15
+ expect(operation).to be_a_kind_of(WorldnetTps::Request::SecureCard::Removal)
16
+ expect(operation.gateway).to eq(gateway)
17
+ end
18
+
19
+ describe '.invoke!' do
20
+ include_context :xsd_validation
21
+ subject do
22
+ VCR.use_cassette(vcr_cassette, match_requests_on: [:method, :uri, :body]) do
23
+ operation.invoke!
24
+ end
25
+ end
26
+ it 'should be success' do
27
+ expect(subject).to be_kind_of(WorldnetTps::Response::Success)
28
+ expect(subject.success?).to eq(true)
29
+ end
30
+
31
+ it 'should have valid data' do
32
+ expect(subject.attributes).to(
33
+ match(
34
+ a_hash_including(
35
+ date_time: be_present,
36
+ hash: be_present,
37
+ merchant_ref: merchant_ref
38
+ )
39
+ )
40
+ )
41
+ expect(subject).to be_success
42
+ end
43
+
44
+ context 'when response failed' do
45
+ let(:vcr_cassette) { 'secure_card/removal/failed' }
46
+ it_behaves_like :failed_response do
47
+ it 'should contain error code' do
48
+ expect(subject.code).to be_present
49
+ end
50
+ end
51
+ end
52
+
53
+
54
+
55
+ end
56
+
57
+ end
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ describe WorldnetTps::Request::SecureCard::Search do
4
+
5
+
6
+ let(:merchant_ref) { 'secure_card_search' }
7
+
8
+ let(:operation) do
9
+ gateway.secure_card_search(merchant_ref)
10
+ end
11
+
12
+
13
+ it 'should be valid object' do
14
+ expect(operation).to be_a_kind_of(WorldnetTps::Request::SecureCard::Search)
15
+ expect(operation.gateway).to eq(gateway)
16
+ end
17
+
18
+ let(:vcr_cassette) { 'secure_card/search/success' }
19
+
20
+ describe '.invoke!' do
21
+
22
+ include_context :xsd_validation
23
+
24
+ subject do
25
+ VCR.use_cassette(vcr_cassette, match_requests_on: [:method, :uri, :body]) do
26
+ operation.invoke!
27
+ end
28
+ end
29
+
30
+ it 'should be success' do
31
+ expect(subject).to be_kind_of(WorldnetTps::Response::Success)
32
+ expect(subject.success?).to eq(true)
33
+ end
34
+
35
+ it 'should have valid data' do
36
+ expect(subject.attributes).to(
37
+ match(
38
+ a_hash_including(
39
+ date_time: be_present,
40
+ hash: be_present,
41
+ merchant_ref: merchant_ref
42
+ )
43
+ )
44
+ )
45
+ expect(subject).to be_success
46
+ end
47
+
48
+ context 'when response failed' do
49
+ let(:vcr_cassette) { 'secure_card/search/failed' }
50
+ it_behaves_like :failed_response do
51
+ it 'should contain error code' do
52
+ expect(subject.code).to be_present
53
+ end
54
+ end
55
+ end
56
+
57
+ end
58
+ end
@@ -0,0 +1,58 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'worldnet_tps'
3
+ require 'vcr'
4
+
5
+
6
+
7
+ module WorldnetTpsSharedContext
8
+ extend RSpec::SharedContext
9
+
10
+ before do
11
+ allow(described_class).to receive(:current_date_time).and_return(date_time)
12
+ end
13
+
14
+ let(:date_time) { DateTime.parse('2016-12-10 12:00:00').utc.strftime('%d-%m-%Y:%H:%M:%S:000') }
15
+ let(:gateway) { SandboxCredentials.gateway }
16
+
17
+
18
+ shared_examples :failed_response do
19
+ it 'should return error object' do
20
+ expect(subject.success?).to eq(false)
21
+ expect(subject.message).to be_present
22
+ expect(subject).not_to be_success
23
+ end
24
+ end
25
+
26
+ shared_context :xsd_validation do
27
+ before do
28
+ expect(WorldnetTps::XSD).to receive(:validate!).and_call_original
29
+ end
30
+ end
31
+
32
+ class SandboxCredentials
33
+ def self.attributes
34
+ HashWithIndifferentAccess.new(
35
+ currency: 'USD',
36
+ gateway: :worldnet,
37
+ terminal_id: 6003,
38
+ environment: :sandbox,
39
+ shared_secret: 'sandboxUSD'
40
+ )
41
+ end
42
+ def self.gateway
43
+ WorldnetTps::Gateway.new(attributes)
44
+ end
45
+ end
46
+
47
+
48
+
49
+ end
50
+
51
+ RSpec.configure do |config|
52
+ config.include WorldnetTpsSharedContext
53
+ end
54
+
55
+ VCR.configure do |config|
56
+ config.cassette_library_dir = "spec/fixtures/vcr_cassettes"
57
+ config.hook_into :webmock
58
+ end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+ describe WorldnetTps::XSD do
3
+
4
+ describe '.validate!' do
5
+ let(:xml) do
6
+ %q{
7
+ <REFUND>
8
+ <UNIQUEREF>KR3XSVSZ41</UNIQUEREF>
9
+ <TERMINALID>6003</TERMINALID>
10
+ <AMOUNT>10.50</AMOUNT>
11
+ <DATETIME>10-12-2016:12:00:00:000</DATETIME>
12
+ <OPERATOR>John</OPERATOR>
13
+ <REASON>Product is defective</REASON>
14
+ </REFUND>
15
+ }
16
+ end
17
+
18
+ subject do
19
+ described_class.validate!(xml)
20
+ end
21
+
22
+ it 'should raise exception' do
23
+ expect { subject }.to raise_error(WorldnetTps::XSD::Error) do |error|
24
+ expect(error.message).to eq("Element 'OPERATOR': This element is not expected. Expected is ( HASH ).")
25
+ expect(error.internal_error).to be_a_kind_of(Nokogiri::XML::SyntaxError)
26
+ end
27
+ end
28
+ end
29
+
30
+ end
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'worldnet_tps/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'worldnet_tps'
8
+ spec.version = WorldnetTps::VERSION
9
+ spec.authors = ['Igor Fedoronchuk']
10
+ spec.email = ['fedoronchuk@gmail.com']
11
+ spec.description = %q{Ruby library for integrating with the Worldnet TPS gateway}
12
+ spec.summary = %q{Worldnet TPS Gateway Ruby Client Library}
13
+ spec.homepage = 'https://github.com/Fivell/worldnet_tps'
14
+ spec.license = 'MIT'
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ['lib']
20
+
21
+ spec.add_dependency 'activesupport', '>= 4.1'
22
+ spec.add_dependency 'builder', '~> 3.2'
23
+ spec.add_dependency 'nokogiri', '~> 1.3'
24
+ spec.add_development_dependency 'bundler', '~> 1.3'
25
+ spec.add_development_dependency 'rake'
26
+ spec.add_development_dependency 'rspec', '~> 3.0'
27
+
28
+ end
metadata ADDED
@@ -0,0 +1,205 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: worldnet_tps
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Igor Fedoronchuk
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-12-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '4.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '4.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: builder
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: nokogiri
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.3'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.3'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.3'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.0'
97
+ description: Ruby library for integrating with the Worldnet TPS gateway
98
+ email:
99
+ - fedoronchuk@gmail.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - ".gitignore"
105
+ - ".rvmrc"
106
+ - ".travis.yml"
107
+ - Gemfile
108
+ - LICENSE.txt
109
+ - README.md
110
+ - Rakefile
111
+ - lib/worldnet_tps.rb
112
+ - lib/worldnet_tps/const.rb
113
+ - lib/worldnet_tps/gateway.rb
114
+ - lib/worldnet_tps/gateway.xsd
115
+ - lib/worldnet_tps/request/base.rb
116
+ - lib/worldnet_tps/request/payment.rb
117
+ - lib/worldnet_tps/request/refund.rb
118
+ - lib/worldnet_tps/request/secure_card/registration.rb
119
+ - lib/worldnet_tps/request/secure_card/removal.rb
120
+ - lib/worldnet_tps/request/secure_card/search.rb
121
+ - lib/worldnet_tps/response/error.rb
122
+ - lib/worldnet_tps/response/invalid_hash.rb
123
+ - lib/worldnet_tps/response/success.rb
124
+ - lib/worldnet_tps/version.rb
125
+ - lib/worldnet_tps/ws_object.rb
126
+ - lib/worldnet_tps/xsd.rb
127
+ - spec/fixtures/vcr_cassettes/payment/credit_card/failed.yml
128
+ - spec/fixtures/vcr_cassettes/payment/credit_card/success.yml
129
+ - spec/fixtures/vcr_cassettes/payment/secure_card/failed.yml
130
+ - spec/fixtures/vcr_cassettes/payment/secure_card/success.yml
131
+ - spec/fixtures/vcr_cassettes/refund/order_id/failed.yml
132
+ - spec/fixtures/vcr_cassettes/refund/order_id/success.yml
133
+ - spec/fixtures/vcr_cassettes/refund/unique_ref/failed.yml
134
+ - spec/fixtures/vcr_cassettes/refund/unique_ref/success.yml
135
+ - spec/fixtures/vcr_cassettes/secure_card/registration/registrarion_failed.yml
136
+ - spec/fixtures/vcr_cassettes/secure_card/registration/registration_failed.yml
137
+ - spec/fixtures/vcr_cassettes/secure_card/registration/registration_success.yml
138
+ - spec/fixtures/vcr_cassettes/secure_card/registration/update_failed.yml
139
+ - spec/fixtures/vcr_cassettes/secure_card/registration/update_success.yml
140
+ - spec/fixtures/vcr_cassettes/secure_card/registration/update_success_success.yml
141
+ - spec/fixtures/vcr_cassettes/secure_card/removal/failed.yml
142
+ - spec/fixtures/vcr_cassettes/secure_card/removal/success.yml
143
+ - spec/fixtures/vcr_cassettes/secure_card/search/failed.yml
144
+ - spec/fixtures/vcr_cassettes/secure_card/search/success.yml
145
+ - spec/gateway_spec.rb
146
+ - spec/payment_spec.rb
147
+ - spec/refund_spec.rb
148
+ - spec/secure_card/registration_spec.rb
149
+ - spec/secure_card/removal_spec.rb
150
+ - spec/secure_card/search_spec.rb
151
+ - spec/spec_helper.rb
152
+ - spec/xsd_spec.rb
153
+ - worldnet_tps.gemspec
154
+ homepage: https://github.com/Fivell/worldnet_tps
155
+ licenses:
156
+ - MIT
157
+ metadata: {}
158
+ post_install_message:
159
+ rdoc_options: []
160
+ require_paths:
161
+ - lib
162
+ required_ruby_version: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ required_rubygems_version: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
172
+ requirements: []
173
+ rubyforge_project:
174
+ rubygems_version: 2.5.0
175
+ signing_key:
176
+ specification_version: 4
177
+ summary: Worldnet TPS Gateway Ruby Client Library
178
+ test_files:
179
+ - spec/fixtures/vcr_cassettes/payment/credit_card/failed.yml
180
+ - spec/fixtures/vcr_cassettes/payment/credit_card/success.yml
181
+ - spec/fixtures/vcr_cassettes/payment/secure_card/failed.yml
182
+ - spec/fixtures/vcr_cassettes/payment/secure_card/success.yml
183
+ - spec/fixtures/vcr_cassettes/refund/order_id/failed.yml
184
+ - spec/fixtures/vcr_cassettes/refund/order_id/success.yml
185
+ - spec/fixtures/vcr_cassettes/refund/unique_ref/failed.yml
186
+ - spec/fixtures/vcr_cassettes/refund/unique_ref/success.yml
187
+ - spec/fixtures/vcr_cassettes/secure_card/registration/registrarion_failed.yml
188
+ - spec/fixtures/vcr_cassettes/secure_card/registration/registration_failed.yml
189
+ - spec/fixtures/vcr_cassettes/secure_card/registration/registration_success.yml
190
+ - spec/fixtures/vcr_cassettes/secure_card/registration/update_failed.yml
191
+ - spec/fixtures/vcr_cassettes/secure_card/registration/update_success.yml
192
+ - spec/fixtures/vcr_cassettes/secure_card/registration/update_success_success.yml
193
+ - spec/fixtures/vcr_cassettes/secure_card/removal/failed.yml
194
+ - spec/fixtures/vcr_cassettes/secure_card/removal/success.yml
195
+ - spec/fixtures/vcr_cassettes/secure_card/search/failed.yml
196
+ - spec/fixtures/vcr_cassettes/secure_card/search/success.yml
197
+ - spec/gateway_spec.rb
198
+ - spec/payment_spec.rb
199
+ - spec/refund_spec.rb
200
+ - spec/secure_card/registration_spec.rb
201
+ - spec/secure_card/removal_spec.rb
202
+ - spec/secure_card/search_spec.rb
203
+ - spec/spec_helper.rb
204
+ - spec/xsd_spec.rb
205
+ has_rdoc: