pin_pays 0.2.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.
@@ -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: []