tns_payments 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 0.0.8 / 2012-04-11
4
+
5
+ * Default open_timeout and read_timeout to something sensible.
6
+ * Refactored order_id minimum into separate class.
7
+
3
8
  ## 0.0.7 / 2012-04-03
4
9
 
5
10
  * Set order_id to 10000000000 plus the passed order_id.
data/lib/tns_payments.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'tns_payments/connection'
2
2
  require 'tns_payments/request'
3
3
  require 'tns_payments/response'
4
+ require 'tns_payments/transaction'
4
5
  require 'tns_payments/version'
5
6
 
6
7
  module TNSPayments
@@ -3,7 +3,6 @@ require 'base64'
3
3
  module TNSPayments
4
4
  class Connection
5
5
  CREDIT_CARD_TOKEN_FORMAT = /^9\d{15}/
6
- MINIMUM_ORDER_ID = 10000000000
7
6
 
8
7
  attr_accessor :api_key, :host, :merchant_id
9
8
  attr_writer :session_token
@@ -22,7 +21,8 @@ module TNSPayments
22
21
  end
23
22
 
24
23
  def purchase transaction, token
25
- order_id = MINIMUM_ORDER_ID + transaction.order_id.to_i
24
+ transaction = Transaction.new transaction
25
+ order_id = transaction.order_id
26
26
  transaction_id = transaction.transaction_id
27
27
  params = {
28
28
  'apiOperation' => 'PAY',
@@ -35,7 +35,8 @@ module TNSPayments
35
35
  end
36
36
 
37
37
  def refund transaction
38
- order_id = MINIMUM_ORDER_ID + transaction.order_id.to_i
38
+ transaction = Transaction.new transaction
39
+ order_id = transaction.order_id.to_i
39
40
  transaction_id = transaction.transaction_id
40
41
  params = {
41
42
  'apiOperation' => 'REFUND',
@@ -3,23 +3,29 @@ require 'rest-client'
3
3
 
4
4
  module TNSPayments
5
5
  class Request
6
- attr_accessor :connection, :method, :path, :options
6
+ attr_accessor :connection, :method, :path, :payload
7
7
 
8
- def initialize connection, method, path, options = {}
9
- self.connection, self.method, self.path, self.options = connection, method, path, options
8
+ def initialize connection, method, path, payload = {}
9
+ self.connection, self.method, self.path, self.payload = connection, method, path, payload
10
10
  end
11
11
 
12
12
  def perform
13
- authorization = options.fetch(:authorization) { true }
13
+ authorization = payload.fetch(:authorization) { true }
14
14
  url = "#{connection.host}/api/rest/version/4#{path}"
15
15
  auth_headers = {:Authorization => encode_credentials}
16
16
  headers = {:content_type => 'Application/json;charset=UTF-8', :accept => '*/*'}
17
17
  headers.merge! auth_headers if authorization
18
18
 
19
- args = [headers]
20
- args.unshift(options.to_json) unless [:delete, :get, :head].include? method
19
+ args = {
20
+ :method => method,
21
+ :url => url,
22
+ :payload => payload.to_json,
23
+ :headers => headers,
24
+ :timeout => 120,
25
+ :open_timeout => 30
26
+ }
21
27
 
22
- Response.new RestClient.send(method, url, *args)
28
+ Response.new RestClient::Request.execute(args)
23
29
  rescue RestClient::Exception => e
24
30
  Response.new({:result => e.message.upcase, :response => JSON.parse(e.response || '{}')}.to_json)
25
31
  end
@@ -0,0 +1,18 @@
1
+ module TNSPayments
2
+ class Transaction < SimpleDelegator
3
+ attr_writer :minimum_order_id
4
+
5
+ def initialize transaction
6
+ @transaction = transaction
7
+ super
8
+ end
9
+
10
+ def minimum_order_id
11
+ @minimum_order_id ||= 10000000000
12
+ end
13
+
14
+ def order_id
15
+ minimum_order_id + @transaction.order_id.to_i
16
+ end
17
+ end
18
+ end
@@ -1,3 +1,3 @@
1
1
  module TNSPayments
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
@@ -199,7 +199,8 @@ private
199
199
  end
200
200
 
201
201
  def stub_session_token_purchase_request transaction, token
202
- stub_request(:put, /https:\/\/:#{@gateway.api_key}@secure\.ap\.tnspayments\.com\/api\/rest\/version\/4\/merchant\/#{@gateway.merchant_id}\/order\/#{TNSPayments::Connection::MINIMUM_ORDER_ID + transaction.order_id}\/transaction\/#{transaction.transaction_id}/).
202
+ transaction = Transaction.new transaction
203
+ stub_request(:put, /https:\/\/:#{@gateway.api_key}@secure\.ap\.tnspayments\.com\/api\/rest\/version\/4\/merchant\/#{@gateway.merchant_id}\/order\/#{transaction.order_id}\/transaction\/#{transaction.transaction_id}/).
203
204
  with :body => JSON.generate({
204
205
  'apiOperation' => 'PAY',
205
206
  'order' => {'reference' => transaction.reference.to_s},
@@ -215,7 +216,8 @@ private
215
216
  end
216
217
 
217
218
  def stub_credit_card_token_purchase_request transaction, token
218
- stub_request(:put, /https:\/\/:#{@gateway.api_key}@secure\.ap\.tnspayments\.com\/api\/rest\/version\/4\/merchant\/#{@gateway.merchant_id}\/order\/#{TNSPayments::Connection::MINIMUM_ORDER_ID + transaction.order_id}\/transaction\/#{transaction.transaction_id}/).
219
+ transaction = Transaction.new transaction
220
+ stub_request(:put, /https:\/\/:#{@gateway.api_key}@secure\.ap\.tnspayments\.com\/api\/rest\/version\/4\/merchant\/#{@gateway.merchant_id}\/order\/#{transaction.order_id}\/transaction\/#{transaction.transaction_id}/).
219
221
  with :body => JSON.generate({
220
222
  'apiOperation' => 'PAY',
221
223
  'order' => {'reference' => transaction.reference.to_s},
@@ -231,7 +233,8 @@ private
231
233
  end
232
234
 
233
235
  def stub_refund_request transaction
234
- stub_request(:put, /https:\/\/:#{@gateway.api_key}@secure\.ap\.tnspayments\.com\/api\/rest\/version\/4\/merchant\/#{@gateway.merchant_id}\/order\/#{TNSPayments::Connection::MINIMUM_ORDER_ID + transaction.order_id}\/transaction\/#{transaction.transaction_id}/).
236
+ transaction = Transaction.new transaction
237
+ stub_request(:put, /https:\/\/:#{@gateway.api_key}@secure\.ap\.tnspayments\.com\/api\/rest\/version\/4\/merchant\/#{@gateway.merchant_id}\/order\/#{transaction.order_id}\/transaction\/#{transaction.transaction_id}/).
235
238
  with :body => JSON.generate({
236
239
  'apiOperation' => 'REFUND',
237
240
  'transaction' => {'amount' => transaction.amount.to_s, 'currency' => transaction.currency, 'reference' => transaction.transaction_id.to_s}
@@ -0,0 +1,21 @@
1
+ require 'helper'
2
+
3
+ class TNSPayments::TransactionTest < MiniTest::Unit::TestCase
4
+ def test_order_id_is_tns_minimum
5
+ transaction = MiniTest::Mock.new
6
+ transaction.expect :order_id, 0
7
+
8
+ assert_equal 10000000000, Transaction.new(transaction).order_id
9
+ assert transaction.verify
10
+ end
11
+
12
+ def test_minimum_order_id_is_injectable
13
+ mock = MiniTest::Mock.new
14
+ mock.expect :order_id, 10
15
+ transaction = Transaction.new mock
16
+ transaction.minimum_order_id = 0
17
+
18
+ assert_equal 10, transaction.order_id
19
+ assert mock.verify
20
+ end
21
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tns_payments
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 15
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 7
10
- version: 0.0.7
9
+ - 8
10
+ version: 0.0.8
11
11
  platform: ruby
12
12
  authors:
13
13
  - Tim Cooper
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-04-03 00:00:00 +10:00
18
+ date: 2012-04-11 00:00:00 +10:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -106,10 +106,12 @@ files:
106
106
  - lib/tns_payments/connection.rb
107
107
  - lib/tns_payments/request.rb
108
108
  - lib/tns_payments/response.rb
109
+ - lib/tns_payments/transaction.rb
109
110
  - lib/tns_payments/version.rb
110
111
  - test/helper.rb
111
112
  - test/unit/conntection_test.rb
112
113
  - test/unit/response_test.rb
114
+ - test/unit/transaction_test.rb
113
115
  - tns_payments.gemspec
114
116
  has_rdoc: true
115
117
  homepage: ""
@@ -149,3 +151,4 @@ test_files:
149
151
  - test/helper.rb
150
152
  - test/unit/conntection_test.rb
151
153
  - test/unit/response_test.rb
154
+ - test/unit/transaction_test.rb