killbill-payment-test 1.8.4 → 1.8.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d15b07f1b2de9e55be2aa7410ef913d44efc7560
4
- data.tar.gz: dd473f58c669eef5749980bd8a4b7ceb877ed6e5
3
+ metadata.gz: 3dd0f0101a16fc924301d9374f79579b7e426323
4
+ data.tar.gz: 94beb0af3d84929338750441545b4294c4d45588
5
5
  SHA512:
6
- metadata.gz: e5d2781cd1fb3da583cae4d285d52989e9f540f0d40fbc3109e8ce457c5cff9df63053f51a6fcf584ab8d077faf0ada3a67f47816364f45415b15f703cdcc341
7
- data.tar.gz: 2d59e5316912603f004a9d83a9153e520654918c6717a1eeea3f346b8c4fe29c16aaf975cff8c24bbc2cbf671380f8814fd81931e7e78bfccca1fda12fae67e0
6
+ metadata.gz: 7c89ef3f1707be0df53f962fa8d2d600a42b3648fb7f5aff34dd419539f15d76442956c251bb4bdbf87a54bfa838a795f741e1e1ed6b384011889401a945de50
7
+ data.tar.gz: 843f10490a329c0d055d6ea469cce41b70bf4c2a8a8e6a0607a062df04097a0e90993dc9f2cdac9c51015d7f7ab32b5022ee01d2cc55422ebc4e36e4e6d213e4
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.8.4
1
+ 1.8.5
@@ -1,16 +1,34 @@
1
1
  require 'payment_test/api_beatrix'
2
2
  require 'payment_test/api_control'
3
+ require 'payment_test/plugin_property_utils'
3
4
 
4
5
  module PaymentTest
5
6
 
6
- #
7
- # Note we don't inherit Killbill::Plugin::Payment < Killbill::Plugin::PluginBase, but we inherit straight Killbill::Plugin::PluginBase
8
- # to bypass the definition of all the APIs, which by default raise OperationUnsupportedByGatewayError. That way, any API call
9
- # goes straight into method_missing, and the correct delegate dispatching can happen.
10
- #
11
- class PaymentPlugin < Killbill::Plugin::PluginBase
7
+ class PaymentPlugin < Killbill::Plugin::Payment
12
8
  attr_reader :api_beatrix, :api_control
13
9
 
10
+ #
11
+ # undef all methods defined in Killbill::Plugin::Payment that throw by default OperationUnsupportedByGatewayError
12
+ # so we get directed straight to the method_missing handler
13
+ #
14
+ undef_method :authorize_payment
15
+ undef_method :capture_payment
16
+ undef_method :purchase_payment
17
+ undef_method :void_payment
18
+ undef_method :credit_payment
19
+ undef_method :refund_payment
20
+ undef_method :get_payment_info
21
+ undef_method :search_payments
22
+ undef_method :add_payment_method
23
+ undef_method :delete_payment_method
24
+ undef_method :get_payment_method_detail
25
+ undef_method :set_default_payment_method
26
+ undef_method :get_payment_methods
27
+ undef_method :search_payment_methods
28
+ undef_method :reset_payment_methods
29
+ undef_method :build_form_descriptor
30
+ undef_method :process_notification
31
+
14
32
  def initialize
15
33
  super
16
34
  @api_beatrix = PaymentPluginBeatrix.new(self)
@@ -22,19 +40,21 @@ module PaymentTest
22
40
  # properties is always the second last argument right before context
23
41
  properties = args[args.length - 2]
24
42
 
25
- if properties && (!properties.is_a? Hash)
26
- raise ArgumentError.new "properties should be a Hash"
27
- end
43
+ # Let's be cautious..
44
+ PluginPropertyUtils.validate_properties(properties)
45
+
46
+ # Extract TEST_MODE property if it exists
47
+ test_prop = PluginPropertyUtils::get_property_or_nil(properties, 'TEST_MODE')
28
48
 
29
49
  # Default to Beatrix (nil properties, no key specified, or explicit key)
30
- if properties.nil? ||
31
- (!properties.has_key? 'TEST_MODE') ||
32
- properties['TEST_MODE'] == 'BEATRIX'
50
+ if test_prop.nil? ||
51
+ test_prop.value == 'BEATRIX'
33
52
  @api_beatrix.send method, *args
34
53
  else
35
54
  @api_control.sleep_if_required properties
36
55
  @api_control.send method, *args
37
56
  end
38
57
  end
58
+
39
59
  end
40
60
  end
@@ -1,3 +1,5 @@
1
+ require 'payment_test/plugin_property_utils'
2
+
1
3
  module PaymentTest
2
4
  class PaymentPluginControl
3
5
 
@@ -96,14 +98,12 @@ module PaymentTest
96
98
 
97
99
 
98
100
  def sleep_if_required(properties)
99
- if properties.nil? ||
100
- (!properties.has_key? 'SLEEP_TIME_SEC')
101
- return
101
+ sleep_prop = PluginPropertyUtils::get_property_or_nil(properties, 'SLEEP_TIME_SEC')
102
+ if sleep_prop
103
+ sleep_time = sleep_prop.value.to_f
104
+ @parent.logger.info "PaymentPluginControl sleeping #{sleep_time}"
105
+ sleep sleep_time
102
106
  end
103
-
104
- sleep_time = properties['SLEEP_TIME_SEC']
105
- @parent.logger "PaymentPluginControl sleeping #{sleep_time}"
106
- sleep sleep_time
107
107
  end
108
108
 
109
109
  private
@@ -135,12 +135,8 @@ module PaymentTest
135
135
 
136
136
 
137
137
  def status_from_properties(properties)
138
- if properties.nil? ||
139
- (!properties.has_key? 'TRANSACTION_STATUS')
140
- return :PROCESSED
141
- else
142
- properties['TRANSACTION_STATUS'].to_sym
143
- end
138
+ status_prop = PluginPropertyUtils::get_property_or_nil(properties, 'TRANSACTION_STATUS')
139
+ status_prop.nil? ? :PROCESSED : status_prop.value.to_sym
144
140
  end
145
141
  end
146
142
  end
@@ -0,0 +1,30 @@
1
+ module PaymentTest
2
+
3
+ class PluginPropertyUtils
4
+
5
+ def self.get_property_or_nil(properties, key_name)
6
+ test_props = (properties || []).select { |e| e.key == key_name }
7
+ if test_props.size > 1
8
+ raise ArgumentError.new "multiple property with key #{key_name} is not allowed"
9
+ end
10
+ test_props.size == 1 ? test_props[0] : nil
11
+ end
12
+
13
+ def self.validate_properties(properties)
14
+ if properties.nil?
15
+ return
16
+ end
17
+
18
+ if !properties.is_a? Array
19
+ raise ArgumentError.new "properties should be an Array"
20
+ end
21
+
22
+ properties.each do |p|
23
+ if !p.is_a? Killbill::Plugin::Model::PluginProperty
24
+ raise ArgumentError.new "Each property should be of type Killbill::Plugin::Model::PluginProperty"
25
+ end
26
+ end
27
+ end
28
+
29
+ end
30
+ end
data/pom.xml CHANGED
@@ -27,7 +27,7 @@
27
27
  <groupId>org.kill-bill.billing.plugin.ruby</groupId>
28
28
  <artifactId>payment-test-plugin</artifactId>
29
29
  <packaging>pom</packaging>
30
- <version>1.8.4</version>
30
+ <version>1.8.5</version>
31
31
  <name>payment-test-plugin</name>
32
32
  <description></description>
33
33
  <scm>
@@ -38,8 +38,13 @@ describe PaymentTest::PaymentPlugin do
38
38
  end
39
39
 
40
40
  it "should test control api" do
41
- properties = Hash.new
42
- properties['TEST_MODE'] = 'CONTROL'
41
+
42
+ properties = []
43
+ prop_test_mode = Killbill::Plugin::Model::PluginProperty.new
44
+ prop_test_mode.key = 'TEST_MODE'
45
+ prop_test_mode.value = 'CONTROL'
46
+ properties << prop_test_mode
47
+
43
48
  transaction1 = @plugin.authorize_payment(@kb_account_id, @kb_payment_id, @kb_payment_transaction_id, @kb_payment_method_id, @amount_in_cents, @currency, properties, @call_context)
44
49
 
45
50
  transaction1.should be_an_instance_of Killbill::Plugin::Model::PaymentTransactionInfoPlugin
@@ -50,7 +55,10 @@ describe PaymentTest::PaymentPlugin do
50
55
  transaction1.transaction_type.should == :AUTHORIZE
51
56
  transaction1.status.should == :PROCESSED
52
57
 
53
- properties['TRANSACTION_STATUS'] = 'ERROR'
58
+ prop_status = Killbill::Plugin::Model::PluginProperty.new
59
+ prop_status.key = 'TRANSACTION_STATUS'
60
+ prop_status.value = 'ERROR'
61
+ properties << prop_status
54
62
 
55
63
  transaction2 = @plugin.capture_payment(@kb_account_id, @kb_payment_id, @kb_payment_transaction_id, @kb_payment_method_id, @amount_in_cents, @currency, properties, @call_context)
56
64
  transaction2.kb_payment_id.should == @kb_payment_id
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: killbill-payment-test
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.4
4
+ version: 1.8.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kill Bill core team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-15 00:00:00.000000000 Z
11
+ date: 2014-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: killbill
@@ -85,6 +85,7 @@ files:
85
85
  - lib/payment_test/api.rb
86
86
  - lib/payment_test/api_beatrix.rb
87
87
  - lib/payment_test/api_control.rb
88
+ - lib/payment_test/plugin_property_utils.rb
88
89
  - pom.xml
89
90
  - release.sh
90
91
  - spec/payment_test/base_plugin_spec.rb