gestpay 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 (37) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +24 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +7 -0
  5. data/Gemfile +17 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +52 -0
  8. data/Rakefile +4 -0
  9. data/gestpay.gemspec +29 -0
  10. data/lib/gestpay.rb +22 -0
  11. data/lib/gestpay/configuration.rb +34 -0
  12. data/lib/gestpay/digest.rb +41 -0
  13. data/lib/gestpay/error.rb +7 -0
  14. data/lib/gestpay/error/failed_digest.rb +19 -0
  15. data/lib/gestpay/error/verify_visa.rb +15 -0
  16. data/lib/gestpay/gateway.rb +49 -0
  17. data/lib/gestpay/result.rb +10 -0
  18. data/lib/gestpay/result/base.rb +25 -0
  19. data/lib/gestpay/result/decrypt.rb +6 -0
  20. data/lib/gestpay/result/encrypt.rb +9 -0
  21. data/lib/gestpay/result/payment.rb +13 -0
  22. data/lib/gestpay/result/token_request.rb +9 -0
  23. data/lib/gestpay/version.rb +3 -0
  24. data/spec/fixtures/gestpay_cassettes/decrypt_ko.yml +224 -0
  25. data/spec/fixtures/gestpay_cassettes/decrypt_ok.yml +171 -0
  26. data/spec/fixtures/gestpay_cassettes/encrypt_ko.yml +169 -0
  27. data/spec/fixtures/gestpay_cassettes/encrypt_ok.yml +170 -0
  28. data/spec/fixtures/gestpay_cassettes/payment_ko.yml +397 -0
  29. data/spec/fixtures/gestpay_cassettes/payment_ok.yml +395 -0
  30. data/spec/fixtures/gestpay_cassettes/payment_token.yml +397 -0
  31. data/spec/fixtures/gestpay_cassettes/payment_visa.yml +395 -0
  32. data/spec/fixtures/gestpay_cassettes/request_token_ko.yml +400 -0
  33. data/spec/fixtures/gestpay_cassettes/request_token_ok.yml +399 -0
  34. data/spec/lib/gestpay/digest_spec.rb +72 -0
  35. data/spec/lib/gestpay/gateway_spec.rb +110 -0
  36. data/spec/spec_helper.rb +30 -0
  37. metadata +192 -0
@@ -0,0 +1,110 @@
1
+ require (File.expand_path('../../../spec_helper', __FILE__))
2
+ # For Ruby > 1.9.3, use this instead of require
3
+ # require_relative '../../spec_helper'
4
+
5
+ describe Gestpay::Gateway do
6
+
7
+ let(:gateway) { Gestpay::Gateway.new }
8
+
9
+ after do
10
+ VCR.eject_cassette
11
+ end
12
+
13
+ describe '#payment' do
14
+ context "with an ok data hash" do
15
+ before { VCR.insert_cassette 'payment_ok', :record => :new_episodes }
16
+ it "should return stuff" do
17
+ hash = {
18
+ :amount => '0.02',
19
+ :shop_transaction_id => '12',
20
+ :card_number => '5364000000000987',
21
+ :expiry_month => '01',
22
+ :expiry_year => '20',
23
+ :cvv => "753",
24
+ :buyer_name => "Test Customer",
25
+ :buyer_email => "test@example.com",
26
+ :custom_info => {
27
+ :user_id => 12,
28
+ :payment_id => 15
29
+ }
30
+ }
31
+ result = gateway.payment(hash)
32
+ result.should be_success
33
+ result.amount.should == 0.02
34
+ end
35
+ end
36
+
37
+ context "with a VISA credit card with Verification" do
38
+ before { VCR.insert_cassette 'payment_visa', :record => :new_episodes }
39
+ it "should raise a VerifyVisa error" do
40
+ hash = {
41
+ :card_number => '4556541926187165'
42
+ }
43
+ result = gateway.payment(hash)
44
+ result.should be_verify_by_visa
45
+ end
46
+ end
47
+
48
+ context "with an invalid credit card" do
49
+ before { VCR.insert_cassette 'payment_ko', :record => :new_episodes }
50
+ it "should raise an error" do
51
+ hash = {
52
+ :amount => '0.02',
53
+ :shop_transaction_id => '12',
54
+ :card_number => '5432123456789012'
55
+ }
56
+ result = gateway.payment(hash)
57
+ result.should_not be_success
58
+ result.error.should == 'Error 74: Autorizzazione negata'
59
+ end
60
+ end
61
+
62
+ context "with a token" do
63
+ before { VCR.insert_cassette 'payment_token', :record => :new_episodes }
64
+ it "should be ok" do
65
+ hash = {
66
+ :amount => '0.02',
67
+ :shop_transaction_id => '12',
68
+ :token_value => '53QWERTYU0I90987'
69
+ }
70
+ result = gateway.payment(hash)
71
+ result.should be_success
72
+ result.amount.should == 0.02
73
+ end
74
+ end
75
+
76
+ end
77
+
78
+ describe '#request_token' do
79
+ context "with an ok data hash" do
80
+ before { VCR.insert_cassette 'request_token_ok', :record => :new_episodes }
81
+ it "should return a payment token" do
82
+ hash = {
83
+ :card_number => '4556541926187165',
84
+ :expiry_month => '12',
85
+ :expiry_year => '20',
86
+ :cvv => "123",
87
+ }
88
+ # This returned ok as we didn't verify the card with the false parameter
89
+ result = gateway.request_token(hash, false)
90
+ result.token.should == "45OGBX64451Y7165"
91
+ # result[:info] also returned
92
+ end
93
+ end
94
+
95
+ context "with an invalid credit card" do
96
+ before { VCR.insert_cassette 'request_token_ko', :record => :new_episodes }
97
+ it "should raise an error" do
98
+ hash = {
99
+ :card_number => '4556541926187165',
100
+ :expiry_month => '12',
101
+ :expiry_year => '20',
102
+ :cvv => "123",
103
+ }
104
+ result = gateway.request_token(hash)
105
+ result.error.should == "Error 405: Autorizzazione negata dai circuiti"
106
+ end
107
+ end
108
+ end
109
+
110
+ end
@@ -0,0 +1,30 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # Require this file using `require "spec_helper"` to ensure that it is only
4
+ # loaded once.
5
+ #
6
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
+ RSpec.configure do |config|
8
+ config.treat_symbols_as_metadata_keys_with_true_values = true
9
+ config.run_all_when_everything_filtered = true
10
+ config.filter_run :focus
11
+
12
+ # Run specs in random order to surface order dependencies. If you find an
13
+ # order dependency and want to debug it, you can fix the order by providing
14
+ # the seed, which is printed after each run.
15
+ # --seed 1234
16
+ config.order = 'random'
17
+ end
18
+
19
+ require(File.expand_path('../../lib/gestpay', __FILE__))
20
+
21
+ require 'pry'
22
+ require 'rspec/autorun'
23
+ require 'webmock/rspec'
24
+ require 'vcr'
25
+
26
+ VCR.configure do |config|
27
+ config.cassette_library_dir = 'spec/fixtures/gestpay_cassettes'
28
+ config.hook_into :webmock
29
+ # config.allow_http_connections_when_no_cassette = true
30
+ end
metadata ADDED
@@ -0,0 +1,192 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gestpay
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Alessandro Mencarini
8
+ - Maurizio de Magnis
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-05-29 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: savon
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ~>
19
+ - !ruby/object:Gem::Version
20
+ version: 2.2.0
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ version: 2.2.0
28
+ - !ruby/object:Gem::Dependency
29
+ name: activesupport
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: 3.2.13
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ~>
40
+ - !ruby/object:Gem::Version
41
+ version: 3.2.13
42
+ - !ruby/object:Gem::Dependency
43
+ name: bundler
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ~>
47
+ - !ruby/object:Gem::Version
48
+ version: '1.3'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: '1.3'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rake
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: rspec
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: 2.13.0
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ~>
82
+ - !ruby/object:Gem::Version
83
+ version: 2.13.0
84
+ - !ruby/object:Gem::Dependency
85
+ name: vcr
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ~>
89
+ - !ruby/object:Gem::Version
90
+ version: 2.4.0
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ~>
96
+ - !ruby/object:Gem::Version
97
+ version: 2.4.0
98
+ - !ruby/object:Gem::Dependency
99
+ name: webmock
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ~>
103
+ - !ruby/object:Gem::Version
104
+ version: 1.9.0
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ~>
110
+ - !ruby/object:Gem::Version
111
+ version: 1.9.0
112
+ description: GestPay services wrapper
113
+ email:
114
+ - a.mencarini@freegoweb.it
115
+ - maurizio.demagnis@gmail.com
116
+ executables: []
117
+ extensions: []
118
+ extra_rdoc_files: []
119
+ files:
120
+ - .gitignore
121
+ - .rspec
122
+ - .travis.yml
123
+ - Gemfile
124
+ - LICENSE.txt
125
+ - README.md
126
+ - Rakefile
127
+ - gestpay.gemspec
128
+ - lib/gestpay.rb
129
+ - lib/gestpay/configuration.rb
130
+ - lib/gestpay/digest.rb
131
+ - lib/gestpay/error.rb
132
+ - lib/gestpay/error/failed_digest.rb
133
+ - lib/gestpay/error/verify_visa.rb
134
+ - lib/gestpay/gateway.rb
135
+ - lib/gestpay/result.rb
136
+ - lib/gestpay/result/base.rb
137
+ - lib/gestpay/result/decrypt.rb
138
+ - lib/gestpay/result/encrypt.rb
139
+ - lib/gestpay/result/payment.rb
140
+ - lib/gestpay/result/token_request.rb
141
+ - lib/gestpay/version.rb
142
+ - spec/fixtures/gestpay_cassettes/decrypt_ko.yml
143
+ - spec/fixtures/gestpay_cassettes/decrypt_ok.yml
144
+ - spec/fixtures/gestpay_cassettes/encrypt_ko.yml
145
+ - spec/fixtures/gestpay_cassettes/encrypt_ok.yml
146
+ - spec/fixtures/gestpay_cassettes/payment_ko.yml
147
+ - spec/fixtures/gestpay_cassettes/payment_ok.yml
148
+ - spec/fixtures/gestpay_cassettes/payment_token.yml
149
+ - spec/fixtures/gestpay_cassettes/payment_visa.yml
150
+ - spec/fixtures/gestpay_cassettes/request_token_ko.yml
151
+ - spec/fixtures/gestpay_cassettes/request_token_ok.yml
152
+ - spec/lib/gestpay/digest_spec.rb
153
+ - spec/lib/gestpay/gateway_spec.rb
154
+ - spec/spec_helper.rb
155
+ homepage: http://momitians.github.io/gestpay
156
+ licenses:
157
+ - MIT
158
+ metadata: {}
159
+ post_install_message:
160
+ rdoc_options: []
161
+ require_paths:
162
+ - lib
163
+ required_ruby_version: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - '>='
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ required_rubygems_version: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - '>='
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
173
+ requirements: []
174
+ rubyforge_project:
175
+ rubygems_version: 2.0.2
176
+ signing_key:
177
+ specification_version: 4
178
+ summary: The gem will help with BancaSella payment webservices
179
+ test_files:
180
+ - spec/fixtures/gestpay_cassettes/decrypt_ko.yml
181
+ - spec/fixtures/gestpay_cassettes/decrypt_ok.yml
182
+ - spec/fixtures/gestpay_cassettes/encrypt_ko.yml
183
+ - spec/fixtures/gestpay_cassettes/encrypt_ok.yml
184
+ - spec/fixtures/gestpay_cassettes/payment_ko.yml
185
+ - spec/fixtures/gestpay_cassettes/payment_ok.yml
186
+ - spec/fixtures/gestpay_cassettes/payment_token.yml
187
+ - spec/fixtures/gestpay_cassettes/payment_visa.yml
188
+ - spec/fixtures/gestpay_cassettes/request_token_ko.yml
189
+ - spec/fixtures/gestpay_cassettes/request_token_ok.yml
190
+ - spec/lib/gestpay/digest_spec.rb
191
+ - spec/lib/gestpay/gateway_spec.rb
192
+ - spec/spec_helper.rb