beanstream 1.0.0.rc1

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,103 @@
1
+ require 'test/unit'
2
+ require 'beanstream'
3
+ require 'shoulda'
4
+
5
+ module Beanstream
6
+
7
+ class ReportingAPITest < Test::Unit::TestCase
8
+
9
+ =begin
10
+ setup do
11
+ Beanstream.merchant_id = "300200578"
12
+ Beanstream.payments_api_key = "4BaD82D9197b4cc4b70a221911eE9f70"
13
+ Beanstream.reporting_api_key = "4e6Ff318bee64EA391609de89aD4CF5d"
14
+ end
15
+ =end
16
+
17
+ should "make reports url be the same" do
18
+ assert_equal("/api/v1/reports", ReportingAPI.new.reports_url())
19
+ end
20
+
21
+ end
22
+
23
+ class ReportingAPIIntegrationTest < Test::Unit::TestCase
24
+ should "have successfully found my payments" do
25
+
26
+ Beanstream.merchant_id = "300200578"
27
+ Beanstream.payments_api_key = "4BaD82D9197b4cc4b70a221911eE9f70"
28
+ Beanstream.reporting_api_key = "4e6Ff318bee64EA391609de89aD4CF5d"
29
+
30
+ prefix = SecureRandom.hex(4)
31
+ #prepare a payment
32
+ orderNum1 = PaymentsAPI.generateRandomOrderId(prefix)
33
+ puts "OrderID 1: #{orderNum1}"
34
+ purchase = {
35
+ "order_number" => orderNum1,
36
+ "amount" => 100,
37
+ "payment_method" => PaymentMethods::CARD,
38
+ "card" => {
39
+ "name" => "Mr. Card Testerson",
40
+ "number" => "4030000010001234",
41
+ "expiry_month" => "07",
42
+ "expiry_year" => "22",
43
+ "cvd" => "123",
44
+ "complete" => true
45
+ },
46
+ "custom" => {
47
+ "ref1" => prefix
48
+ }
49
+ }
50
+ #make a 1st purchase
51
+ result = Beanstream.PaymentsAPI.make_payment(purchase)
52
+ assert(PaymentsAPI.payment_approved(result))
53
+ transaction_1_id = result['id']
54
+
55
+ #make a 2nd purchase
56
+ orderNum2 = PaymentsAPI.generateRandomOrderId(prefix)
57
+ puts "OrderID 2: #{orderNum2}"
58
+ purchase['amount'] = 33.29
59
+ purchase['order_number'] = orderNum2
60
+ result = Beanstream.PaymentsAPI.make_payment(purchase)
61
+ assert(PaymentsAPI.payment_approved(result))
62
+ transaction_2_id = result['id']
63
+
64
+ #make a 3nd purchase
65
+ orderNum3 = PaymentsAPI.generateRandomOrderId(prefix)
66
+ puts "OrderID 3: #{orderNum2}"
67
+ purchase['amount'] = 21.55
68
+ purchase['order_number'] = orderNum3
69
+ result = Beanstream.PaymentsAPI.make_payment(purchase)
70
+ assert(PaymentsAPI.payment_approved(result))
71
+ transaction_3_id = result['id']
72
+
73
+ #search for transactions
74
+ last3Hours = Time.now - 3*60*60
75
+ next3Hours = Time.now + 3*60*60
76
+ results = Beanstream.ReportingAPI.search_transactions(last3Hours, next3Hours, 1, 3)
77
+ assert(results != nil)
78
+ assert(results.length == 3)
79
+
80
+
81
+ #find transaction 1 from order number
82
+ results = Beanstream.ReportingAPI.search_transactions(last3Hours, next3Hours, 1, 10,
83
+ Criteria.new(Fields::OrderNumber, Operators::EQUALS, orderNum1)
84
+ )
85
+ assert(results != nil)
86
+ puts "Report search by order number\n: #{results}"
87
+ assert(results.length == 1, "Found #{results.length} instead")
88
+
89
+ #find transaction 2 and 3 from ref1 and amount
90
+ results = Beanstream.ReportingAPI.search_transactions(last3Hours, next3Hours, 1, 10,
91
+ Array[
92
+ Criteria.new(Fields::Ref1, Operators::EQUALS, prefix),
93
+ Criteria.new(Fields::Amount, Operators::LESS_THAN, 50)
94
+ ]
95
+ )
96
+ assert(results != nil)
97
+ puts "Report search by order number and amount\n: #{results}"
98
+ assert(results.length == 2, "Found #{results.length} instead")
99
+ end
100
+
101
+ end
102
+
103
+ end
@@ -0,0 +1,14 @@
1
+ require 'test/unit'
2
+ require 'beanstream'
3
+ require 'shoulda'
4
+
5
+ module Beanstream
6
+ class TransactionAPITest < Test::Unit::TestCase
7
+
8
+ should "encode return exact string" do
9
+ assert_equal("MTIzNDU6YWJjZGVmZw==", Transaction.new.encode("12345", "abcdefg"))
10
+ end
11
+
12
+ end
13
+
14
+ end
metadata ADDED
@@ -0,0 +1,138 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: beanstream
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.rc1
5
+ platform: ruby
6
+ authors:
7
+ - Brent Owens
8
+ - Colin Walker
9
+ - Tom Mengda
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2015-08-14 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rest-client
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.4'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ version: '1.4'
29
+ - !ruby/object:Gem::Dependency
30
+ name: json
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ~>
34
+ - !ruby/object:Gem::Version
35
+ version: 1.8.1
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ~>
41
+ - !ruby/object:Gem::Version
42
+ version: 1.8.1
43
+ - !ruby/object:Gem::Dependency
44
+ name: shoulda
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ~>
48
+ - !ruby/object:Gem::Version
49
+ version: 3.4.0
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: 3.4.0
57
+ - !ruby/object:Gem::Dependency
58
+ name: test-unit
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ - !ruby/object:Gem::Dependency
72
+ name: rake
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ description: Accept payments using Beanstream and Ruby
86
+ email: bowens@beanstream.com
87
+ executables: []
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - .gitignore
92
+ - Gemfile
93
+ - Gemfile.lock
94
+ - LICENSE
95
+ - README.md
96
+ - Rakefile
97
+ - beanstream.gemspec
98
+ - lib/beanstream.rb
99
+ - lib/beanstream/exceptions.rb
100
+ - lib/beanstream/payments_api.rb
101
+ - lib/beanstream/profiles_api.rb
102
+ - lib/beanstream/reporting_api.rb
103
+ - lib/beanstream/transaction.rb
104
+ - lib/beanstream/util.rb
105
+ - lib/resources/cacert.pem
106
+ - test/beanstream/payments_api_test.rb
107
+ - test/beanstream/profiles_api_test.rb
108
+ - test/beanstream/reporting_api_test.rb
109
+ - test/beanstream/transaction_api_test.rb
110
+ homepage: http://developer.beanstream.com
111
+ licenses:
112
+ - MIT
113
+ metadata: {}
114
+ post_install_message:
115
+ rdoc_options: []
116
+ require_paths:
117
+ - lib
118
+ required_ruby_version: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - '>='
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ required_rubygems_version: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - '>'
126
+ - !ruby/object:Gem::Version
127
+ version: 1.3.1
128
+ requirements: []
129
+ rubyforge_project:
130
+ rubygems_version: 2.0.14
131
+ signing_key:
132
+ specification_version: 4
133
+ summary: Beanstream Ruby SDK
134
+ test_files:
135
+ - test/beanstream/payments_api_test.rb
136
+ - test/beanstream/profiles_api_test.rb
137
+ - test/beanstream/reporting_api_test.rb
138
+ - test/beanstream/transaction_api_test.rb