pin_pays 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,124 @@
1
+ require_relative '../../spec_helper'
2
+
3
+
4
+ def create_charge(customer_token)
5
+ charge = nil
6
+ VCR.use_cassette('charges-create') do
7
+ charge = PinPays::Charges.create({
8
+ customer_token: customer_token,
9
+ email: 'test@example.com',
10
+ description: 'Flux Capacitor (box of 10)',
11
+ amount: 9995,
12
+ ip_address: '127.0.0.1',
13
+ capture: true
14
+ })
15
+ end
16
+ charge
17
+ end
18
+
19
+
20
+ def create_preauth(customer_token)
21
+ charge = nil
22
+ VCR.use_cassette('charges-create-preauth') do
23
+ charge = PinPays::Charges.create({
24
+ email: 'test@example.com',
25
+ description: 'Flux Capacitor (box of 10)',
26
+ amount: 9995,
27
+ ip_address: '127.0.0.1',
28
+ capture: false
29
+ })
30
+ end
31
+ charge
32
+ end
33
+
34
+
35
+ describe PinPays::Charges do
36
+
37
+ before do
38
+ PinPays.configure do |config|
39
+ config.key = SECRET_KEY
40
+ config.mode = :test
41
+ end
42
+
43
+ card_token = nil
44
+ VCR.use_cassette('cards-create') do
45
+ card = PinPays::Cards.create({
46
+ number: '5520000000000000',
47
+ expiry_month: '12',
48
+ expiry_year: '2020',
49
+ cvc: '123',
50
+ name: 'Mr Test Case',
51
+ address_line1: '1 Long St',
52
+ address_line2: '',
53
+ address_city: 'Somewhereville',
54
+ address_postcode: '30000',
55
+ address_state: 'Somewherestate',
56
+ address_country: 'Australia'
57
+ })
58
+ card_token = card[:token]
59
+ end
60
+
61
+ VCR.use_cassette('customers-create') do
62
+ customer = PinPays::Customers.create('test@example.com', card_token)
63
+ @customer_token = customer[:token]
64
+ end
65
+ end
66
+
67
+
68
+ describe "create" do
69
+ before do
70
+ @charge = create_charge(@customer_token)
71
+ end
72
+
73
+ it "must include charge token in result" do
74
+ @charge[:token].wont_be_nil
75
+ @charge[:token].must_be_instance_of String
76
+ end
77
+ end
78
+
79
+
80
+ # describe "capture" do
81
+ # end
82
+
83
+
84
+ describe "list" do
85
+ before do
86
+ VCR.use_cassette('charges-list') do
87
+ @list = PinPays::Charges.list()
88
+ end
89
+ end
90
+
91
+ it "must return a pagination style result" do
92
+ @list[:items].wont_be_nil
93
+ @list[:items].must_be_instance_of Array
94
+ @list[:pages].wont_be_nil
95
+ @list[:pages].must_be_instance_of Hash
96
+ end
97
+ end
98
+
99
+
100
+ # describe "search" do
101
+ # end
102
+
103
+
104
+ describe "show" do
105
+ before do
106
+ @charge = create_charge(@customer_token)
107
+ VCR.use_cassette('charges-show') do
108
+ @show = PinPays::Charges.show(@charge[:token])
109
+ end
110
+ end
111
+
112
+ it "must include requested charges's token in result" do
113
+ @show[:token].wont_be_nil
114
+ @show[:token].must_be_instance_of String
115
+ @show[:token].must_equal @charge[:token]
116
+ end
117
+ end
118
+
119
+
120
+ # todo - test the more exotic alternative ways to create a charge, and
121
+ # verify the non-success modes using pin-payment's sentinal card values
122
+
123
+
124
+ end
@@ -0,0 +1,30 @@
1
+ require_relative '../../spec_helper'
2
+
3
+
4
+ describe PinPays::Configuration do
5
+
6
+ before do
7
+ PinPays.configure do |config|
8
+ config.key = 'testkey'
9
+ config.mode = :test
10
+ end
11
+ end
12
+
13
+ it "must have a configuration object on the module" do
14
+ PinPays.configuration.wont_be_nil
15
+ PinPays.configuration.must_be_instance_of PinPays::Configuration
16
+ end
17
+
18
+ it "must configure key" do
19
+ PinPays.configuration.key.must_equal 'testkey'
20
+ end
21
+
22
+ it "must configure mode" do
23
+ PinPays.configuration.mode.must_equal :test
24
+ end
25
+
26
+ it "must configure base_url on api class" do
27
+ (PinPays::Api.base_uri).must_equal PinPays::Api::TEST_URI
28
+ end
29
+
30
+ end
@@ -0,0 +1,131 @@
1
+ require_relative '../../spec_helper'
2
+
3
+
4
+ def create_customer(card_token)
5
+ customer = nil
6
+ VCR.use_cassette('customers-create') do
7
+ customer = PinPays::Customers.create('test@example.com', card_token)
8
+ end
9
+ customer
10
+ end
11
+
12
+
13
+ describe PinPays::Customers do
14
+
15
+ before do
16
+ PinPays.configure do |config|
17
+ config.key = SECRET_KEY
18
+ config.mode = :test
19
+ end
20
+ VCR.use_cassette('cards-create') do
21
+ card = PinPays::Cards.create({
22
+ number: '5520000000000000',
23
+ expiry_month: '12',
24
+ expiry_year: '2020',
25
+ cvc: '123',
26
+ name: 'Mr Test Case',
27
+ address_line1: '1 Long St',
28
+ address_line2: '',
29
+ address_city: 'Somewhereville',
30
+ address_postcode: '30000',
31
+ address_state: 'Somewherestate',
32
+ address_country: 'Australia'
33
+ })
34
+ @card_token = card[:token]
35
+ end
36
+ end
37
+
38
+
39
+ describe "create" do
40
+
41
+ before do
42
+ @customer = create_customer(@card_token)
43
+ end
44
+
45
+ it "must include customer token in result" do
46
+ @customer[:token].wont_be_nil
47
+ @customer[:token].must_be_instance_of String
48
+ end
49
+
50
+ end
51
+
52
+
53
+ describe "list" do
54
+
55
+ before do
56
+ @customer = create_customer(@card_token)
57
+ VCR.use_cassette('customers-list') do
58
+ @list = PinPays::Customers.list()
59
+ end
60
+ end
61
+
62
+ it "must return a pagination style result" do
63
+ @list[:items].wont_be_nil
64
+ @list[:items].must_be_instance_of Array
65
+ @list[:pages].wont_be_nil
66
+ @list[:pages].must_be_instance_of Hash
67
+ end
68
+
69
+ end
70
+
71
+
72
+ describe "show" do
73
+
74
+ before do
75
+ @customer = create_customer(@card_token)
76
+ VCR.use_cassette('customers-show') do
77
+ @show = PinPays::Customers.show(@customer[:token])
78
+ end
79
+ end
80
+
81
+ it "must include requested customer's token in result" do
82
+ @show[:token].wont_be_nil
83
+ @show[:token].must_be_instance_of String
84
+ @show[:token].must_equal @customer[:token]
85
+ end
86
+
87
+ end
88
+
89
+
90
+ describe "update" do
91
+
92
+ before do
93
+ @customer = create_customer(@card_token)
94
+ @updated_email = 'foo@bar.com'
95
+ VCR.use_cassette('customers-update') do
96
+ @update = PinPays::Customers.update(@customer[:token], { email: @updated_email })
97
+ end
98
+ end
99
+
100
+ it "must include requested customer's token in result" do
101
+ @update[:token].wont_be_nil
102
+ @update[:token].must_be_instance_of String
103
+ @update[:token].must_equal @customer[:token]
104
+ end
105
+
106
+ it "must include updated email in result" do
107
+ @update[:email].must_equal @updated_email
108
+ end
109
+
110
+ end
111
+
112
+
113
+ describe "charges" do
114
+
115
+ before do
116
+ @customer = create_customer(@card_token)
117
+ VCR.use_cassette('customers-charges') do
118
+ @charges = PinPays::Customers.charges(@customer[:token])
119
+ end
120
+ end
121
+
122
+ it "must return a pagination style result" do
123
+ @charges[:items].wont_be_nil
124
+ @charges[:items].must_be_instance_of Array
125
+ @charges[:pages].wont_be_nil
126
+ @charges[:pages].must_be_instance_of Hash
127
+ end
128
+
129
+ end
130
+
131
+ end
@@ -0,0 +1,79 @@
1
+ require_relative '../../spec_helper'
2
+
3
+
4
+ describe PinPays::Refunds do
5
+
6
+ before do
7
+ PinPays.configure do |config|
8
+ config.key = SECRET_KEY
9
+ config.mode = :test
10
+ end
11
+
12
+ card_token = nil
13
+ VCR.use_cassette('cards-create') do
14
+ card = PinPays::Cards.create({
15
+ number: '5520000000000000',
16
+ expiry_month: '12',
17
+ expiry_year: '2020',
18
+ cvc: '123',
19
+ name: 'Mr Test Case',
20
+ address_line1: '1 Long St',
21
+ address_line2: '',
22
+ address_city: 'Somewhereville',
23
+ address_postcode: '30000',
24
+ address_state: 'Somewherestate',
25
+ address_country: 'Australia'
26
+ })
27
+ @card_token = card[:token]
28
+ end
29
+
30
+ VCR.use_cassette('customers-create') do
31
+ customer = PinPays::Customers.create('test@example.com', @card_token)
32
+ @customer_token = customer[:token]
33
+ end
34
+
35
+ VCR.use_cassette('charges-create') do
36
+ charge = PinPays::Charges.create({
37
+ customer_token: @customer_token,
38
+ email: 'test@example.com',
39
+ description: 'Flux Capacitor (box of 10)',
40
+ amount: 9995,
41
+ ip_address: '127.0.0.1',
42
+ capture: true
43
+ })
44
+ @charge_token = charge[:token]
45
+ end
46
+ end
47
+
48
+
49
+ describe "create" do
50
+ before do
51
+ VCR.use_cassette('refunds-create') do
52
+ @refund = PinPays::Refunds.create(@charge_token)
53
+ end
54
+ end
55
+
56
+ it "must include refund token in result" do
57
+ @refund[:token].wont_be_nil
58
+ @refund[:token].must_be_instance_of String
59
+ end
60
+
61
+ it "must include original charge token in result" do
62
+ @refund[:charge].must_equal @charge_token
63
+ end
64
+ end
65
+
66
+
67
+ describe "list" do
68
+ before do
69
+ VCR.use_cassette('refunds-list') do
70
+ @list = PinPays::Refunds.list(@charge_token)
71
+ end
72
+ end
73
+
74
+ it "must return an array result" do
75
+ @list.must_be_instance_of Array
76
+ end
77
+ end
78
+
79
+ end
@@ -0,0 +1,22 @@
1
+ require File.expand_path('../../lib/pin_pays.rb', __FILE__)
2
+
3
+ require 'minitest/autorun'
4
+ require 'webmock/minitest'
5
+ require 'vcr'
6
+ require 'turn'
7
+
8
+ #SECRET_KEY = 'your-pinpayments-secret-key'
9
+
10
+ Turn.config do |c|
11
+ c.format = :outline
12
+ c.trace = true
13
+ c.natural = true
14
+ c.verbose = true
15
+ end
16
+
17
+ VCR.configure do |c|
18
+ c.cassette_library_dir = 'spec/fixtures/vcr'
19
+ c.hook_into :webmock
20
+ c.filter_sensitive_data('<SECRET_KEY>') { SECRET_KEY }
21
+ end
22
+
metadata ADDED
@@ -0,0 +1,150 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pin_pays
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Michael Lilley
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-04-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: httparty
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.13'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.13'
27
+ - !ruby/object:Gem::Dependency
28
+ name: webmock
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.17'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.17'
41
+ - !ruby/object:Gem::Dependency
42
+ name: vcr
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.9'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.9'
55
+ - !ruby/object:Gem::Dependency
56
+ name: turn
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.9'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.9'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '10.3'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '10.3'
83
+ description: Provides an implementation of the Pin Payments API (pin.com.au) for Ruby
84
+ and Rails projects
85
+ email: mike@mlilley.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - ".gitignore"
91
+ - ".ruby-gemset"
92
+ - ".ruby-version"
93
+ - Gemfile
94
+ - LICENSE
95
+ - README.md
96
+ - Rakefile
97
+ - lib/pin_pays.rb
98
+ - lib/pin_pays/api.rb
99
+ - lib/pin_pays/cards.rb
100
+ - lib/pin_pays/charges.rb
101
+ - lib/pin_pays/config.rb
102
+ - lib/pin_pays/customers.rb
103
+ - lib/pin_pays/error.rb
104
+ - lib/pin_pays/refunds.rb
105
+ - lib/pin_pays/version.rb
106
+ - pin_pays.gemspec
107
+ - spec/README.txt
108
+ - spec/fixtures/vcr/cards-create.yml
109
+ - spec/fixtures/vcr/charges-create.yml
110
+ - spec/fixtures/vcr/charges-list.yml
111
+ - spec/fixtures/vcr/charges-show.yml
112
+ - spec/fixtures/vcr/customers-charges.yml
113
+ - spec/fixtures/vcr/customers-create.yml
114
+ - spec/fixtures/vcr/customers-list.yml
115
+ - spec/fixtures/vcr/customers-show.yml
116
+ - spec/fixtures/vcr/customers-update.yml
117
+ - spec/fixtures/vcr/refunds-create.yml
118
+ - spec/fixtures/vcr/refunds-list.yml
119
+ - spec/lib/pin_pays/api_spec.rb
120
+ - spec/lib/pin_pays/cards_spec.rb
121
+ - spec/lib/pin_pays/charges_spec.rb
122
+ - spec/lib/pin_pays/config_spec.rb
123
+ - spec/lib/pin_pays/customers_spec.rb
124
+ - spec/lib/pin_pays/refunds_spec.rb
125
+ - spec/spec_helper.rb
126
+ homepage: https://github.com/mlilley/pin_pays
127
+ licenses:
128
+ - MIT
129
+ metadata: {}
130
+ post_install_message:
131
+ rdoc_options: []
132
+ require_paths:
133
+ - lib
134
+ required_ruby_version: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ required_rubygems_version: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ requirements: []
145
+ rubyforge_project:
146
+ rubygems_version: 2.2.2
147
+ signing_key:
148
+ specification_version: 4
149
+ summary: Pin Payments API Implementation for Ruby and Rails
150
+ test_files: []