killbill-payment-test 3.2.0 → 3.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/Jarfile.lock +3 -3
- data/README.md +3 -2
- data/VERSION +1 -1
- data/lib/payment_test/api.rb +5 -0
- data/lib/payment_test/application.rb +4 -2
- data/lib/payment_test/plugin_property_utils.rb +9 -0
- data/lib/payment_test/state.rb +18 -2
- data/pom.xml +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7372b10969f7c4de8f1d65a4f43e0b47ff43b715
|
4
|
+
data.tar.gz: 3f4c20f14d7f01fa72beb56bb9f129f8e1938b0d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f0779f9964563294be903d42627de18f7a506cdfd8a0b448d894870be4ca99643367b9195217dbfe11efc731276ad7e6ecde37fc4ca708f1c4c25380d0be179
|
7
|
+
data.tar.gz: 78f9fb8821ca938a0d0f0e07474cb47342110b421688104ef211824f46cc4f8d142d08836fe8aacf9faa3641cf171311cefed5a5fc7e9905a25a93522e6d8b5d
|
data/Gemfile.lock
CHANGED
data/Jarfile.lock
CHANGED
@@ -8,9 +8,9 @@
|
|
8
8
|
- org.kill-bill.billing.plugin:killbill-plugin-api-notification:jar:0.18
|
9
9
|
- commons-beanutils:commons-beanutils:jar:1.8.3
|
10
10
|
- org.kill-bill.billing:killbill-internal-api:jar:0.15.10
|
11
|
+
- com.google.inject:guice:jar:3.0
|
11
12
|
- org.kill-bill.commons:killbill-xmlloader:jar:0.11
|
12
13
|
- org.kill-bill.billing.plugin:killbill-plugin-api-entitlement:jar:0.18
|
13
|
-
- com.google.inject:guice:jar:3.0
|
14
14
|
- org.osgi:org.osgi.core:jar:5.0.0
|
15
15
|
- org.slf4j:slf4j-api:jar:1.7.12
|
16
16
|
- com.samskivert:jmustache:jar:1.5
|
@@ -50,14 +50,14 @@
|
|
50
50
|
- org.kill-bill.commons:killbill-locker:jar:0.11
|
51
51
|
- org.osgi:org.osgi.compendium:jar:5.0.0
|
52
52
|
- org.kill-bill.commons:killbill-queue:jar:0.11
|
53
|
-
- org.kill-bill.commons:killbill-concurrent:jar:0.11
|
54
53
|
- javax.servlet:javax.servlet-api:jar:3.1.0
|
54
|
+
- org.kill-bill.commons:killbill-concurrent:jar:0.11
|
55
55
|
- org.apache.shiro:shiro-ehcache:jar:1.2.3
|
56
56
|
- javax.inject:javax.inject:jar:1
|
57
57
|
- com.fasterxml.jackson.datatype:jackson-datatype-joda:jar:2.4.3
|
58
58
|
- com.google.inject.extensions:guice-multibindings:jar:3.0
|
59
59
|
- net.sf.ehcache:ehcache:jar:2.9.1
|
60
|
-
- org.kill-bill.billing.plugin:killbill-plugin-api-invoice:jar:0.18
|
61
60
|
- org.kill-bill.billing:killbill-api:jar:0.32
|
61
|
+
- org.kill-bill.billing.plugin:killbill-plugin-api-invoice:jar:0.18
|
62
62
|
- org.apache.shiro:shiro-guice:jar:1.2.3
|
63
63
|
- com.google.code.findbugs:annotations:jar:3.0.0
|
data/README.md
CHANGED
@@ -17,6 +17,7 @@ When using payment api, one can provide payment plugin properties to enable fail
|
|
17
17
|
|
18
18
|
In that mode, the property `TEST_MODE` must be set to something different than `BEATRIX` (any other string would work. In addition the following properties are allowed:
|
19
19
|
|
20
|
+
* `ACTION_RETURN_PLUGIN_STATUS_ERROR`=true : This will make the plugin return a `PaymentPluginStatus.ERROR` on each payment call (e.g to simulate Insuficient Fund type of errors).
|
20
21
|
* `THROW_EXCEPTION`=true : This will make the plugin throw RuntimeException exception on each call
|
21
22
|
* `RETURN_NIL`=true : This will make the plugin return a nil value on each call
|
22
23
|
* `SLEEP_TIME_SEC`=sleep_time_sec : This will make the plugin sleep `sleep_time_sec` on each call
|
@@ -35,7 +36,7 @@ The json body for the call supports the following:
|
|
35
36
|
|
36
37
|
Examples:
|
37
38
|
|
38
|
-
This will confgure the plugin
|
39
|
+
This will confgure the plugin to return an payment error on each `purchase_payment` call (note that the name of the methods come from the definition of the [payment plugin api](https://github.com/killbill/killbill-plugin-api/blob/master/payment/src/main/java/org/killbill/billing/payment/plugin/api/PaymentPluginApi.java):
|
39
40
|
|
40
41
|
```
|
41
42
|
curl -v \
|
@@ -45,7 +46,7 @@ curl -v \
|
|
45
46
|
-H "Content-Type: application/json" \
|
46
47
|
-H 'X-Killbill-CreatedBy: stephane' \
|
47
48
|
-X POST \
|
48
|
-
--data-binary '{"CONFIGURE_ACTION":"
|
49
|
+
--data-binary '{"CONFIGURE_ACTION":"ACTION_RETURN_PLUGIN_STATUS_ERROR", "METHODS":"purchase_payment"}' \
|
49
50
|
-v 'http://127.0.0.1:8080/plugins/killbill-payment-test/configure'
|
50
51
|
```
|
51
52
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.3.0
|
data/lib/payment_test/api.rb
CHANGED
@@ -43,6 +43,7 @@ module PaymentTest
|
|
43
43
|
|
44
44
|
def method_missing(method, *args, &block)
|
45
45
|
# properties is always the second last argument right before context
|
46
|
+
args[args.length - 2] = [] if args[args.length - 2].nil?
|
46
47
|
properties = args[args.length - 2]
|
47
48
|
|
48
49
|
# Let's be cautious..
|
@@ -62,6 +63,10 @@ module PaymentTest
|
|
62
63
|
# Check if we need to sleep
|
63
64
|
@api_control.sleep_if_required(properties, @state.sleep_time_sec(method))
|
64
65
|
|
66
|
+
if @state.always_return_plugin_status_error(method)
|
67
|
+
PluginPropertyUtils.add_property_if_not_exist(properties, 'TRANSACTION_STATUS', 'ERROR')
|
68
|
+
end
|
69
|
+
|
65
70
|
# Finally make the call
|
66
71
|
@api_control.send method, *args
|
67
72
|
end
|
@@ -26,11 +26,13 @@ post '/plugins/killbill-payment-test/configure', :provides => 'json' do
|
|
26
26
|
|
27
27
|
action = data['CONFIGURE_ACTION']
|
28
28
|
if action.nil?
|
29
|
-
halt 400, {'Content-Type' => 'text/plain'}, "Invalid json, need to specify one CONFIGURE_ACTION={ACTION_THROW_EXCEPTION|ACTION_RETURN_NIL|ACTION_SLEEP|ACTION_RESET}"
|
29
|
+
halt 400, {'Content-Type' => 'text/plain'}, "Invalid json, need to specify one CONFIGURE_ACTION={ACTION_RETURN_PLUGIN_STATUS_ERROR|ACTION_THROW_EXCEPTION|ACTION_RETURN_NIL|ACTION_SLEEP|ACTION_RESET}"
|
30
30
|
end
|
31
31
|
|
32
32
|
|
33
|
-
if action == '
|
33
|
+
if action == 'ACTION_RETURN_PLUGIN_STATUS_ERROR'
|
34
|
+
state.configure_always_return_plugin_status_error(data['METHODS'])
|
35
|
+
elsif action == 'ACTION_THROW_EXCEPTION'
|
34
36
|
state.configure_always_throw(data['METHODS'])
|
35
37
|
elsif action == 'ACTION_RETURN_NIL'
|
36
38
|
state.configure_return_nil(data['METHODS'])
|
@@ -10,6 +10,15 @@ module PaymentTest
|
|
10
10
|
test_props.size == 1 ? test_props[0] : nil
|
11
11
|
end
|
12
12
|
|
13
|
+
def self.add_property_if_not_exist(properties, key_name, key_value)
|
14
|
+
if get_property_or_nil(properties, key_name).nil?
|
15
|
+
prop = Killbill::Plugin::Model::PluginProperty.new
|
16
|
+
prop.key = key_name
|
17
|
+
prop.value = key_value
|
18
|
+
properties << prop
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
13
22
|
def self.validate_properties(properties)
|
14
23
|
if properties.nil?
|
15
24
|
return
|
data/lib/payment_test/state.rb
CHANGED
@@ -9,25 +9,37 @@ module PaymentTest
|
|
9
9
|
reset_configuration
|
10
10
|
end
|
11
11
|
|
12
|
+
def configure_always_return_plugin_status_error(methods=nil)
|
13
|
+
reset_configuration
|
14
|
+
configure_methods(methods)
|
15
|
+
@always_return_plugin_status_error = true
|
16
|
+
log_current_state
|
17
|
+
end
|
18
|
+
|
19
|
+
|
12
20
|
def configure_always_throw(methods=nil)
|
21
|
+
reset_configuration
|
13
22
|
configure_methods(methods)
|
14
23
|
@always_throw = true
|
15
24
|
log_current_state
|
16
25
|
end
|
17
26
|
|
18
27
|
def configure_return_nil(methods=nil)
|
28
|
+
reset_configuration
|
19
29
|
configure_methods(methods)
|
20
30
|
@always_return_nil = true
|
21
31
|
log_current_state
|
22
32
|
end
|
23
33
|
|
24
34
|
def configure_sleep_time(sleep_time_sec, methods=nil)
|
35
|
+
reset_configuration
|
25
36
|
configure_methods(methods)
|
26
37
|
@sleep_time_sec = sleep_time_sec
|
27
38
|
log_current_state
|
28
39
|
end
|
29
40
|
|
30
41
|
def reset_configuration
|
42
|
+
@always_return_plugin_status_error = false
|
31
43
|
@always_throw = false
|
32
44
|
@always_return_nil = false
|
33
45
|
@sleep_time_sec = nil
|
@@ -35,6 +47,10 @@ module PaymentTest
|
|
35
47
|
log_current_state
|
36
48
|
end
|
37
49
|
|
50
|
+
def always_return_plugin_status_error(method)
|
51
|
+
@always_return_plugin_status_error && is_for_method(method)
|
52
|
+
end
|
53
|
+
|
38
54
|
def always_throw(method)
|
39
55
|
@always_throw && is_for_method(method)
|
40
56
|
end
|
@@ -49,11 +65,11 @@ module PaymentTest
|
|
49
65
|
end
|
50
66
|
|
51
67
|
def is_clear
|
52
|
-
return !@always_throw && !@always_return_nil && @sleep_time_sec.nil?
|
68
|
+
return !@always_return_plugin_status_error && !@always_throw && !@always_return_nil && @sleep_time_sec.nil?
|
53
69
|
end
|
54
70
|
|
55
71
|
def log_current_state
|
56
|
-
puts "PaymentTest:State : @always_throw = #{@always_throw}, @always_return_nil = #{@always_return_nil}, @sleep_time_sec = #{@sleep_time_sec}, @methods=#{@methods}"
|
72
|
+
puts "PaymentTest:State : @always_return_plugin_status_error = #{@always_return_plugin_status_error}, @always_throw = #{@always_throw}, @always_return_nil = #{@always_return_nil}, @sleep_time_sec = #{@sleep_time_sec}, @methods=#{@methods}"
|
57
73
|
end
|
58
74
|
|
59
75
|
private
|
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>3.
|
30
|
+
<version>3.3.0</version>
|
31
31
|
<name>payment-test-plugin</name>
|
32
32
|
<description></description>
|
33
33
|
<scm>
|
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: 3.
|
4
|
+
version: 3.3.0
|
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: 2015-12-
|
11
|
+
date: 2015-12-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: killbill
|