killbill-client 2.1.0 → 2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9c01c6127fe5ed5e1792ba6620e3d45191d4d9d9
4
- data.tar.gz: 15e5e33c51fb44f6ef021401c11caa154778558f
3
+ metadata.gz: 5fa87a6246a9c682976375f3e29fb18c0eeef1c3
4
+ data.tar.gz: f3aaea13d0f68ffbc516b7213d7de4053a56228f
5
5
  SHA512:
6
- metadata.gz: 253690b630b7df59fb9f0d27090bbd5c360da3cb9b0794fdb31d43f905340927884918fde16b9fb237a4a94fa9eecb9badbeef9e290bdc8f9c9a65ad214ad69b
7
- data.tar.gz: 7fa5fa939b9565ad9d99dbfa9ef9f152620108177bfa5b6931fa598354196bace9795e5f150ddabc87acf4a4216b769511005110ca5f3ce0b083983a0536ef36
6
+ metadata.gz: e38d75f004f707a4684213ecc3b52da47913754beecffca0f009a633cbbfcbdabcb0d14d6c5076cf6a7124f3f938684e820cc6c7122ed6d5313a8815bfa77c5c
7
+ data.tar.gz: c186cfce4f402bbfbfdd78917aeda1b0761d28874f32dbbe96f48b15d27cd3ef9918edcf262eaa8ab55003edf9f6110f60b51f58450fdbc3f8c9c3099472b022
@@ -0,0 +1,371 @@
1
+ defaults: &defaults
2
+ working_directory: ~/repo
3
+ environment:
4
+ JRUBY_OPTS: --2.0 -J-Xmx1024M
5
+
6
+ version: 2
7
+ jobs:
8
+ build-jruby-1.7.26:
9
+ <<: *defaults
10
+ docker:
11
+ - image: killbill/kbbuild:0.2.0
12
+ steps:
13
+ - checkout
14
+ - restore_cache:
15
+ key: v1-dependencies-jruby-1.7.26-{{ .Branch }}-{{ checksum "killbill_client.gemspec" }}
16
+ - run:
17
+ name: Install gem dependencies
18
+ command: |
19
+ bundle install --jobs=4 --retry=3 --path=vendor/bundle
20
+ - save_cache:
21
+ paths:
22
+ - Gemfile.lock
23
+ - .bundle
24
+ - vendor/bundle
25
+ key: v1-dependencies-jruby-1.7.26-{{ .Branch }}-{{ checksum "killbill_client.gemspec" }}
26
+
27
+ test-mysql-jruby-1.7.26:
28
+ <<: *defaults
29
+ docker:
30
+ - image: killbill/kbbuild:0.2.0
31
+ - image: killbill/killbill:0.19.2
32
+ - image: killbill/mariadb:0.19
33
+ environment:
34
+ - MYSQL_ROOT_PASSWORD=root
35
+ steps:
36
+ - checkout
37
+ - restore_cache:
38
+ key: v1-dependencies-jruby-1.7.26-{{ .Branch }}-{{ checksum "killbill_client.gemspec" }}
39
+ - run:
40
+ name: Setup DDL
41
+ command: |
42
+ set +e
43
+ count=0
44
+ until mysqladmin ping -h 127.0.0.1 -u root --password=root --silent; do
45
+ if [[ "$count" == "25" ]]; then
46
+ exit 1
47
+ fi
48
+ (( count++ ))
49
+ printf '.'
50
+ sleep 5
51
+ done
52
+ set -e
53
+ - run:
54
+ name: Setup Kill Bill
55
+ command: |
56
+ set +e
57
+ count=0
58
+ until $(curl --output /dev/null --silent --fail http://127.0.0.1:8080/1.0/healthcheck); do
59
+ if [[ "$count" == "25" ]]; then
60
+ exit 1
61
+ fi
62
+ (( count++ ))
63
+
64
+ printf '.'
65
+ sleep 5
66
+ done
67
+ set -e
68
+ curl -v \
69
+ -X POST \
70
+ -u admin:password \
71
+ -H 'Content-Type: application/json' \
72
+ -H 'X-Killbill-CreatedBy: CircleCI' \
73
+ -d '{"apiKey": "bob", "apiSecret": "lazar"}' \
74
+ "http://127.0.0.1:8080/1.0/kb/tenants?useGlobalDefault=true"
75
+ - run:
76
+ name: Run tests
77
+ command: |
78
+ mkdir /tmp/test-results
79
+ bundle exec rspec --format documentation \
80
+ --out /tmp/test-results/rspec.txt \
81
+ $(circleci tests glob "spec/**/*_spec.rb")
82
+ - store_test_results:
83
+ path: /tmp/test-results
84
+ - store_artifacts:
85
+ path: /tmp/test-results
86
+ destination: test-results
87
+
88
+ build-ruby-2.2.2:
89
+ <<: *defaults
90
+ docker:
91
+ - image: killbill/kbbuild:0.2.0
92
+ steps:
93
+ - checkout
94
+ - restore_cache:
95
+ key: v1-dependencies-ruby-2.2.2-{{ .Branch }}-{{ checksum "killbill_client.gemspec" }}
96
+ - run:
97
+ name: Install gem dependencies
98
+ command: |
99
+ source /usr/share/rvm/scripts/rvm
100
+ rvm use ruby-2.2.2
101
+ bundle install --jobs=4 --retry=3 --path=vendor/bundle
102
+ - save_cache:
103
+ paths:
104
+ - Gemfile.lock
105
+ - .bundle
106
+ - vendor/bundle
107
+ key: v1-dependencies-ruby-2.2.2-{{ .Branch }}-{{ checksum "killbill_client.gemspec" }}
108
+
109
+ test-mysql-ruby-2.2.2:
110
+ <<: *defaults
111
+ docker:
112
+ - image: killbill/kbbuild:0.2.0
113
+ - image: killbill/killbill:0.19.2
114
+ - image: killbill/mariadb:0.19
115
+ environment:
116
+ - MYSQL_ROOT_PASSWORD=root
117
+ steps:
118
+ - checkout
119
+ - restore_cache:
120
+ key: v1-dependencies-ruby-2.2.2-{{ .Branch }}-{{ checksum "killbill_client.gemspec" }}
121
+ - run:
122
+ name: Setup DDL
123
+ command: |
124
+ set +e
125
+ count=0
126
+ until mysqladmin ping -h 127.0.0.1 -u root --password=root --silent; do
127
+ if [[ "$count" == "25" ]]; then
128
+ exit 1
129
+ fi
130
+ (( count++ ))
131
+ printf '.'
132
+ sleep 5
133
+ done
134
+ set -e
135
+ - run:
136
+ name: Setup Kill Bill
137
+ command: |
138
+ set +e
139
+ count=0
140
+ until $(curl --output /dev/null --silent --fail http://127.0.0.1:8080/1.0/healthcheck); do
141
+ if [[ "$count" == "25" ]]; then
142
+ exit 1
143
+ fi
144
+ (( count++ ))
145
+
146
+ printf '.'
147
+ sleep 5
148
+ done
149
+ set -e
150
+ curl -v \
151
+ -X POST \
152
+ -u admin:password \
153
+ -H 'Content-Type: application/json' \
154
+ -H 'X-Killbill-CreatedBy: CircleCI' \
155
+ -d '{"apiKey": "bob", "apiSecret": "lazar"}' \
156
+ "http://127.0.0.1:8080/1.0/kb/tenants?useGlobalDefault=true"
157
+ - run:
158
+ name: Run tests
159
+ command: |
160
+ mkdir /tmp/test-results
161
+ source /usr/share/rvm/scripts/rvm
162
+ rvm use ruby-2.2.2
163
+ bundle exec rspec --format documentation \
164
+ --out /tmp/test-results/rspec.txt \
165
+ $(circleci tests glob "spec/**/*_spec.rb")
166
+ - store_test_results:
167
+ path: /tmp/test-results
168
+ - store_artifacts:
169
+ path: /tmp/test-results
170
+ destination: test-results
171
+
172
+ build-ruby-2.4.2:
173
+ <<: *defaults
174
+ docker:
175
+ - image: killbill/kbbuild:0.2.0
176
+ steps:
177
+ - checkout
178
+ - restore_cache:
179
+ key: v1-dependencies-ruby-2.4.2-{{ .Branch }}-{{ checksum "killbill_client.gemspec" }}
180
+ - run:
181
+ name: Install gem dependencies
182
+ command: |
183
+ source /usr/share/rvm/scripts/rvm
184
+ rvm use ruby-2.4.2
185
+ bundle install --jobs=4 --retry=3 --path=vendor/bundle
186
+ - save_cache:
187
+ paths:
188
+ - Gemfile.lock
189
+ - .bundle
190
+ - vendor/bundle
191
+ key: v1-dependencies-ruby-2.4.2-{{ .Branch }}-{{ checksum "killbill_client.gemspec" }}
192
+
193
+ test-mysql-ruby-2.4.2:
194
+ <<: *defaults
195
+ docker:
196
+ - image: killbill/kbbuild:0.2.0
197
+ - image: killbill/killbill:0.19.2
198
+ - image: killbill/mariadb:0.19
199
+ environment:
200
+ - MYSQL_ROOT_PASSWORD=root
201
+ steps:
202
+ - checkout
203
+ - restore_cache:
204
+ key: v1-dependencies-ruby-2.4.2-{{ .Branch }}-{{ checksum "killbill_client.gemspec" }}
205
+ - run:
206
+ name: Setup DDL
207
+ command: |
208
+ set +e
209
+ count=0
210
+ until mysqladmin ping -h 127.0.0.1 -u root --password=root --silent; do
211
+ if [[ "$count" == "25" ]]; then
212
+ exit 1
213
+ fi
214
+ (( count++ ))
215
+ printf '.'
216
+ sleep 5
217
+ done
218
+ set -e
219
+ - run:
220
+ name: Setup Kill Bill
221
+ command: |
222
+ set +e
223
+ count=0
224
+ until $(curl --output /dev/null --silent --fail http://127.0.0.1:8080/1.0/healthcheck); do
225
+ if [[ "$count" == "25" ]]; then
226
+ exit 1
227
+ fi
228
+ (( count++ ))
229
+
230
+ printf '.'
231
+ sleep 5
232
+ done
233
+ set -e
234
+ curl -v \
235
+ -X POST \
236
+ -u admin:password \
237
+ -H 'Content-Type: application/json' \
238
+ -H 'X-Killbill-CreatedBy: CircleCI' \
239
+ -d '{"apiKey": "bob", "apiSecret": "lazar"}' \
240
+ "http://127.0.0.1:8080/1.0/kb/tenants?useGlobalDefault=true"
241
+ - run:
242
+ name: Run tests
243
+ command: |
244
+ mkdir /tmp/test-results
245
+ source /usr/share/rvm/scripts/rvm
246
+ rvm use ruby-2.4.2
247
+ bundle exec rspec --format documentation \
248
+ --out /tmp/test-results/rspec.txt \
249
+ $(circleci tests glob "spec/**/*_spec.rb")
250
+ - store_test_results:
251
+ path: /tmp/test-results
252
+ - store_artifacts:
253
+ path: /tmp/test-results
254
+ destination: test-results
255
+
256
+ build-jruby-9.1.14.0:
257
+ <<: *defaults
258
+ docker:
259
+ - image: killbill/kbbuild:0.2.0
260
+ steps:
261
+ - checkout
262
+ - restore_cache:
263
+ key: v1-dependencies-jruby-9.1.14.0-{{ .Branch }}-{{ checksum "killbill_client.gemspec" }}
264
+ - run:
265
+ name: Install gem dependencies
266
+ command: |
267
+ source /usr/share/rvm/scripts/rvm
268
+ rvm use jruby-9.1.14.0
269
+ bundle install --jobs=4 --retry=3 --path=vendor/bundle
270
+ - save_cache:
271
+ paths:
272
+ - Gemfile.lock
273
+ - .bundle
274
+ - vendor/bundle
275
+ key: v1-dependencies-jruby-9.1.14.0-{{ .Branch }}-{{ checksum "killbill_client.gemspec" }}
276
+
277
+ test-mysql-jruby-9.1.14.0:
278
+ <<: *defaults
279
+ docker:
280
+ - image: killbill/kbbuild:0.2.0
281
+ - image: killbill/killbill:0.19.2
282
+ - image: killbill/mariadb:0.19
283
+ environment:
284
+ - MYSQL_ROOT_PASSWORD=root
285
+ steps:
286
+ - checkout
287
+ - restore_cache:
288
+ key: v1-dependencies-jruby-9.1.14.0-{{ .Branch }}-{{ checksum "killbill_client.gemspec" }}
289
+ - run:
290
+ name: Setup DDL
291
+ command: |
292
+ set +e
293
+ count=0
294
+ until mysqladmin ping -h 127.0.0.1 -u root --password=root --silent; do
295
+ if [[ "$count" == "25" ]]; then
296
+ exit 1
297
+ fi
298
+ (( count++ ))
299
+ printf '.'
300
+ sleep 5
301
+ done
302
+ set -e
303
+ - run:
304
+ name: Setup Kill Bill
305
+ command: |
306
+ set +e
307
+ count=0
308
+ until $(curl --output /dev/null --silent --fail http://127.0.0.1:8080/1.0/healthcheck); do
309
+ if [[ "$count" == "25" ]]; then
310
+ exit 1
311
+ fi
312
+ (( count++ ))
313
+
314
+ printf '.'
315
+ sleep 5
316
+ done
317
+ set -e
318
+ curl -v \
319
+ -X POST \
320
+ -u admin:password \
321
+ -H 'Content-Type: application/json' \
322
+ -H 'X-Killbill-CreatedBy: CircleCI' \
323
+ -d '{"apiKey": "bob", "apiSecret": "lazar"}' \
324
+ "http://127.0.0.1:8080/1.0/kb/tenants?useGlobalDefault=true"
325
+ - run:
326
+ name: Run tests
327
+ command: |
328
+ mkdir /tmp/test-results
329
+ source /usr/share/rvm/scripts/rvm
330
+ rvm use jruby-9.1.14.0
331
+ bundle exec rspec --format documentation \
332
+ --out /tmp/test-results/rspec.txt \
333
+ $(circleci tests glob "spec/**/*_spec.rb")
334
+ - store_test_results:
335
+ path: /tmp/test-results
336
+ - store_artifacts:
337
+ path: /tmp/test-results
338
+ destination: test-results
339
+ workflows:
340
+ version: 2
341
+ build-and-test:
342
+ jobs:
343
+ # Kill Bill plugins
344
+ - build-jruby-1.7.26
345
+ # Self-contained KPM
346
+ - build-ruby-2.2.2:
347
+ requires:
348
+ - build-jruby-1.7.26
349
+ # Kaui and other gems
350
+ - build-ruby-2.4.2:
351
+ requires:
352
+ - build-jruby-1.7.26
353
+ # Self-contained Kaui
354
+ - build-jruby-9.1.14.0:
355
+ requires:
356
+ - build-jruby-1.7.26
357
+ - test-mysql-jruby-1.7.26:
358
+ requires:
359
+ - build-jruby-1.7.26
360
+ - test-mysql-ruby-2.2.2:
361
+ requires:
362
+ - build-ruby-2.2.2
363
+ - test-mysql-jruby-1.7.26
364
+ - test-mysql-ruby-2.4.2:
365
+ requires:
366
+ - build-ruby-2.4.2
367
+ - test-mysql-jruby-1.7.26
368
+ - test-mysql-jruby-9.1.14.0:
369
+ requires:
370
+ - build-jruby-9.1.14.0
371
+ - test-mysql-jruby-1.7.26
@@ -140,6 +140,16 @@ module KillBillClient
140
140
  Invoice
141
141
  end
142
142
 
143
+ def migration_invoices(with_items=false, options = {})
144
+ self.class.get "#{KILLBILL_API_ACCOUNTS_PREFIX}/#{account_id}/invoices",
145
+ {
146
+ :withMigrationInvoices => true,
147
+ :withItems => with_items
148
+ },
149
+ options,
150
+ Invoice
151
+ end
152
+
143
153
  def payments(options = {})
144
154
  self.class.get "#{KILLBILL_API_ACCOUNTS_PREFIX}/#{account_id}/payments",
145
155
  {},
@@ -265,6 +275,13 @@ module KillBillClient
265
275
  AccountEmailAttributes
266
276
  end
267
277
 
278
+ def email_notifications(options = {})
279
+ self.class.get "#{KILLBILL_API_ACCOUNTS_PREFIX}/#{account_id}/emailNotifications",
280
+ {},
281
+ options,
282
+ InvoiceEmailAttributes
283
+ end
284
+
268
285
  def update_email_notifications(user = nil, reason = nil, comment = nil, options = {})
269
286
  self.class.put "#{KILLBILL_API_ACCOUNTS_PREFIX}/#{account_id}/emailNotifications",
270
287
  to_json,
@@ -297,6 +314,63 @@ module KillBillClient
297
314
  options,
298
315
  CustomField
299
316
  end
317
+
318
+ def blocking_states(blocking_state_types, blocking_state_svcs, audit = 'NONE', options = {})
319
+ params = {}
320
+ params[:blockingStateTypes] = blocking_state_types if blocking_state_types
321
+ params[:blockingStateSvcs] = blocking_state_svcs if blocking_state_svcs
322
+ params[:audit] = audit
323
+ self.class.get "#{KILLBILL_API_ACCOUNTS_PREFIX}/#{account_id}/block",
324
+ params,
325
+ options,
326
+ BlockingStateAttributes
327
+
328
+ end
329
+
330
+ def set_blocking_state(state_name, service, block_change, block_entitlement, block_billing, requested_date = nil, user = nil, reason = nil, comment = nil, options = {})
331
+
332
+ params = {}
333
+ params[:requestedDate] = requested_date if requested_date
334
+
335
+ body = KillBillClient::Model::BlockingStateAttributes.new
336
+ body.state_name = state_name
337
+ body.service = service
338
+ body.block_change = block_change
339
+ body.block_entitlement = block_entitlement
340
+ body.block_billing = block_billing
341
+
342
+ self.class.put "#{KILLBILL_API_ACCOUNTS_PREFIX}/#{account_id}/block",
343
+ body.to_json,
344
+ params,
345
+ {
346
+ :user => user,
347
+ :reason => reason,
348
+ :comment => comment,
349
+ }.merge(options)
350
+ blocking_states(nil, nil, 'NONE', options)
351
+ end
352
+
353
+ def cba_rebalancing(user = nil, reason = nil, comment = nil, options = {})
354
+ self.class.post "#{KILLBILL_API_ACCOUNTS_PREFIX}/#{account_id}/cbaRebalancing",
355
+ {},
356
+ {},
357
+ {
358
+ :user => user,
359
+ :reason => reason,
360
+ :comment => comment,
361
+ }.merge(options)
362
+ end
363
+
364
+ def invoice_payments(audit='NONE', with_plugin_info = false, with_attempts = false, options = {})
365
+ self.class.get "#{KILLBILL_API_ACCOUNTS_PREFIX}/#{account_id}/invoicePayments",
366
+ {
367
+ :audit => audit,
368
+ :withPluginInfo => with_plugin_info,
369
+ :withAttempts => with_attempts
370
+ },
371
+ options,
372
+ InvoicePayment
373
+ end
300
374
  end
301
375
  end
302
376
  end
@@ -29,6 +29,15 @@ module KillBillClient
29
29
  PlanDetail
30
30
  end
31
31
 
32
+ def get_tenant_catalog_versions(options = {})
33
+
34
+ require_multi_tenant_options!(options, "Retrieving catalog versions is only supported in multi-tenant mode")
35
+
36
+ get "#{KILLBILL_API_CATALOG_PREFIX}/versions",
37
+ {},
38
+ options
39
+ end
40
+
32
41
  def get_tenant_catalog(format, requested_date=nil, options = {})
33
42
 
34
43
  require_multi_tenant_options!(options, "Retrieving a catalog is only supported in multi-tenant mode")
@@ -4,17 +4,26 @@ module KillBillClient
4
4
  KILLBILL_API_CREDITS_PREFIX = "#{KILLBILL_API_PREFIX}/credits"
5
5
  has_many :audit_logs, KillBillClient::Model::AuditLog
6
6
 
7
+ class << self
8
+ def find_by_id(credit_id, options = {})
9
+ get "#{KILLBILL_API_CREDITS_PREFIX}/#{credit_id}",
10
+ {},
11
+ options,
12
+ CreditAttributes
13
+ end
14
+ end
15
+
7
16
  def create(auto_commit = false, user = nil, reason = nil, comment = nil, options = {})
8
17
  created_credit = self.class.post KILLBILL_API_CREDITS_PREFIX,
9
- to_json,
10
- {
11
- :autoCommit => auto_commit
12
- },
13
- {
14
- :user => user,
15
- :reason => reason,
16
- :comment => comment,
17
- }.merge(options)
18
+ to_json,
19
+ {
20
+ :autoCommit => auto_commit
21
+ },
22
+ {
23
+ :user => user,
24
+ :reason => reason,
25
+ :comment => comment,
26
+ }.merge(options)
18
27
  created_credit.refresh(options)
19
28
  end
20
29
 
@@ -3,6 +3,7 @@ module KillBillClient
3
3
  class Invoice < InvoiceAttributes
4
4
 
5
5
  include KillBillClient::Model::CustomFieldHelper
6
+ include KillBillClient::Model::TagHelper
6
7
 
7
8
  KILLBILL_API_INVOICES_PREFIX = "#{KILLBILL_API_PREFIX}/invoices"
8
9
  KILLBILL_API_DRY_RUN_INVOICES_PREFIX = "#{KILLBILL_API_INVOICES_PREFIX}/dryRun"
@@ -12,6 +13,7 @@ module KillBillClient
12
13
  has_many :credits, KillBillClient::Model::Credit
13
14
 
14
15
  has_custom_fields KILLBILL_API_INVOICES_PREFIX, :invoice_id
16
+ has_tags KILLBILL_API_INVOICES_PREFIX, :invoice_id
15
17
 
16
18
  class << self
17
19
  def find_by_id_or_number(id_or_number, with_items = true, audit = "NONE", options = {})
@@ -99,7 +101,7 @@ module KillBillClient
99
101
 
100
102
 
101
103
  def create_subscription_dry_run(account_id, bundle_id, target_date, product_name, product_category,
102
- billing_period, price_list_name, options = {})
104
+ billing_period, price_list_name, options = {})
103
105
  query_map = {:accountId => account_id}
104
106
  query_map[:targetDate] = target_date if !target_date.nil?
105
107
 
@@ -130,7 +132,7 @@ module KillBillClient
130
132
  end
131
133
 
132
134
  def change_plan_dry_run(account_id, bundle_id, subscription_id, target_date, product_name, product_category, billing_period, price_list_name,
133
- effective_date, billing_policy, options = {})
135
+ effective_date, billing_policy, options = {})
134
136
  query_map = {:accountId => account_id}
135
137
  query_map[:targetDate] = target_date if !target_date.nil?
136
138
 
@@ -165,7 +167,7 @@ module KillBillClient
165
167
 
166
168
 
167
169
  def cancel_subscription_dry_run(account_id, bundle_id, subscription_id, target_date,
168
- effective_date, billing_policy, options = {})
170
+ effective_date, billing_policy, options = {})
169
171
  query_map = {:accountId => account_id}
170
172
  query_map[:targetDate] = target_date if !target_date.nil?
171
173
 
@@ -295,7 +297,19 @@ module KillBillClient
295
297
  get_catalog_translation(locale, options)
296
298
  end
297
299
 
300
+ def create_migration_invoice(account_id, invoices, target_date, user = nil, reason = nil, comment = nil, options = {})
298
301
 
302
+ params = {}
303
+ params[:targetDate] = target_date
304
+ post "#{KILLBILL_API_INVOICES_PREFIX}/migration/#{account_id}",
305
+ invoices.to_json,
306
+ params,
307
+ {
308
+ :user => user,
309
+ :reason => reason,
310
+ :comment => comment,
311
+ }.merge(options)
312
+ end
299
313
 
300
314
  end
301
315
 
@@ -312,6 +326,19 @@ module KillBillClient
312
326
 
313
327
  end
314
328
 
329
+ def void(user = nil, reason = nil, comment = nil, options = {})
330
+
331
+ self.class.put "#{Invoice::KILLBILL_API_INVOICES_PREFIX}/#{invoice_id}/voidInvoice",
332
+ nil,
333
+ {},
334
+ {
335
+ :user => user,
336
+ :reason => reason,
337
+ :comment => comment,
338
+ }.merge(options)
339
+
340
+ end
341
+
315
342
  def payments(with_plugin_info = false, with_attempts = false, audit = 'NONE', options = {})
316
343
  self.class.get "#{KILLBILL_API_INVOICES_PREFIX}/#{invoice_id}/payments",
317
344
  {
@@ -322,6 +349,18 @@ module KillBillClient
322
349
  options,
323
350
  InvoicePayment
324
351
  end
352
+
353
+ def trigger_email_notifications(user = nil, reason = nil, comment = nil, options = {})
354
+ self.class.post "#{KILLBILL_API_INVOICES_PREFIX}/#{invoice_id}/emailNotifications",
355
+ {},
356
+ {},
357
+ {
358
+ :user => user,
359
+ :reason => reason,
360
+ :comment => comment,
361
+ }.merge(options)
362
+ end
363
+
325
364
  end
326
365
  end
327
366
  end
@@ -12,33 +12,6 @@ module KillBillClient
12
12
 
13
13
  has_many :audit_logs, KillBillClient::Model::AuditLog
14
14
 
15
- def tags(included_deleted = false, audit = 'NONE', options = {})
16
- params = {}
17
- params[:accountId] = account_id
18
- params[:includedDeleted] = included_deleted if included_deleted
19
- params[:audit] = audit
20
- self.class.get "#{KILLBILL_API_INVOICE_ITEMS_PREFIX}/#{invoice_item_id}/tags",
21
- params,
22
- options,
23
- Tag
24
- end
25
-
26
- def add_tags_from_definition_ids(tag_definition_ids, user, reason, comment, options)
27
-
28
- created_tag = self.class.post "#{KILLBILL_API_INVOICE_ITEMS_PREFIX}/#{invoice_item_id}/tags",
29
- {},
30
- {
31
- :tagList => tag_definition_ids.join(',')
32
- },
33
- {
34
- :user => user,
35
- :reason => reason,
36
- :comment => comment,
37
- }.merge(options),
38
- Tag
39
- tags(false, 'NONE', options) unless created_tag.nil?
40
- end
41
-
42
15
  def create(auto_commit = false, user = nil, reason = nil, comment = nil, options = {})
43
16
  created_invoice_item = self.class.post "#{Invoice::KILLBILL_API_INVOICES_PREFIX}/charges/#{account_id}",
44
17
  [to_hash].to_json,
@@ -3,6 +3,7 @@ module KillBillClient
3
3
  class InvoicePayment < InvoicePaymentAttributes
4
4
 
5
5
  include KillBillClient::Model::CustomFieldHelper
6
+ include KillBillClient::Model::TagHelper
6
7
 
7
8
  KILLBILL_API_INVOICE_PAYMENTS_PREFIX = "#{KILLBILL_API_PREFIX}/invoicePayments"
8
9
 
@@ -11,6 +12,7 @@ module KillBillClient
11
12
  has_many :audit_logs, KillBillClient::Model::AuditLog
12
13
 
13
14
  has_custom_fields KILLBILL_API_INVOICE_PAYMENTS_PREFIX, :payment_id
15
+ has_tags KILLBILL_API_INVOICE_PAYMENTS_PREFIX, :payment_id
14
16
 
15
17
  class << self
16
18
  def find_by_id(payment_id, with_plugin_info = false, with_attempts = false, options = {})
@@ -39,6 +41,39 @@ module KillBillClient
39
41
 
40
42
  invoice_payment.refresh(options)
41
43
  end
44
+
45
+ def chargeback(payment_id, amount, currency, effective_date = nil, user = nil, reason = nil, comment = nil, options = {})
46
+ payload = InvoicePaymentTransactionAttributes.new
47
+ payload.amount = amount
48
+ payload.currency = currency
49
+ payload.effective_date = effective_date
50
+
51
+ invoice_payment = post "#{KILLBILL_API_INVOICE_PAYMENTS_PREFIX}/#{payment_id}/chargebacks",
52
+ payload.to_json,
53
+ {},
54
+ {
55
+ :user => user,
56
+ :reason => reason,
57
+ :comment => comment,
58
+ }.merge(options)
59
+ invoice_payment.refresh(options)
60
+ end
61
+
62
+ def chargeback_reversal(payment_id, transaction_external_key, effective_date = nil, user = nil, reason = nil, comment = nil, options = {})
63
+ payload = InvoicePaymentTransactionAttributes.new
64
+ payload.transaction_external_key = transaction_external_key
65
+ payload.effective_date = effective_date
66
+
67
+ invoice_payment = post "#{KILLBILL_API_INVOICE_PAYMENTS_PREFIX}/#{payment_id}/chargebackReversals",
68
+ payload.to_json,
69
+ {},
70
+ {
71
+ :user => user,
72
+ :reason => reason,
73
+ :comment => comment,
74
+ }.merge(options)
75
+ invoice_payment.refresh(options)
76
+ end
42
77
  end
43
78
 
44
79
  def create(external_payment = false, user = nil, reason = nil, comment = nil, options = {})
@@ -69,6 +104,7 @@ module KillBillClient
69
104
  :comment => comment,
70
105
  }.merge(options)
71
106
  end
107
+
72
108
  end
73
109
  end
74
110
  end
@@ -3,6 +3,7 @@ module KillBillClient
3
3
  class Payment < PaymentAttributes
4
4
 
5
5
  include KillBillClient::Model::CustomFieldHelper
6
+ include KillBillClient::Model::TagHelper
6
7
 
7
8
  KILLBILL_API_PAYMENTS_PREFIX = "#{KILLBILL_API_PREFIX}/payments"
8
9
 
@@ -11,6 +12,7 @@ module KillBillClient
11
12
  has_many :audit_logs, KillBillClient::Model::AuditLog
12
13
 
13
14
  has_custom_fields KILLBILL_API_PAYMENTS_PREFIX, :payment_id
15
+ has_tags KILLBILL_API_PAYMENTS_PREFIX, :payment_id
14
16
 
15
17
  class << self
16
18
  def find_by_id(payment_id, with_plugin_info = false, with_attempts = false, options = {})
@@ -132,6 +132,53 @@ module KillBillClient
132
132
  end
133
133
 
134
134
 
135
+ #
136
+ # Block a Subscription
137
+ #
138
+ def set_blocking_state(state_name, service, block_change, block_entitlement, block_billing, requested_date = nil, user = nil, reason = nil, comment = nil, options = {})
139
+
140
+ body = KillBillClient::Model::BlockingStateAttributes.new
141
+ body.state_name = state_name
142
+ body.service = service
143
+ body.block_change = block_change
144
+ body.block_entitlement = block_entitlement
145
+ body.block_billing = block_billing
146
+ body.type = "SUBSCRIPTION"
147
+
148
+ params = {}
149
+ params[:requestedDate] = requested_date unless requested_date.nil?
150
+
151
+ self.class.put "#{KILLBILL_API_ENTITLEMENT_PREFIX}/#{subscription_id}/block",
152
+ body.to_json,
153
+ params,
154
+ {
155
+ :user => user,
156
+ :reason => reason,
157
+ :comment => comment,
158
+ }.merge(options)
159
+ end
160
+
161
+ #
162
+ # Create an entitlement with addOn products
163
+ #
164
+ def create_entitlement_with_add_on(entitlements, requested_date, entitlement_date, billing_date, migrated = false, call_completion_sec = nil, user = nil, reason = nil, comment = nil, options = {})
165
+ params = {}
166
+ params[:requestedDate] = requested_date if requested_date
167
+ params[:entitlementDate] = entitlement_date if entitlement_date
168
+ params[:billingDate] = billing_date if billing_date
169
+ params[:migrated] = migrated
170
+ params[:callCompletion] = true unless call_completion_sec.nil?
171
+ params[:callTimeoutSec] = call_completion_sec unless call_completion_sec.nil?
172
+
173
+ self.class.post "#{KILLBILL_API_ENTITLEMENT_PREFIX}/createEntitlementWithAddOns",
174
+ entitlements.to_json,
175
+ params,
176
+ {
177
+ :user => user,
178
+ :reason => reason,
179
+ :comment => comment,
180
+ }.merge(options)
181
+ end
135
182
  end
136
183
  end
137
184
  end
@@ -92,6 +92,20 @@ module KillBillClient
92
92
  end
93
93
  end
94
94
 
95
+ def refund_by_external_key(user = nil, reason = nil, comment = nil, options = {}, refresh_options = nil)
96
+ follow_location = delete_follow_location(options)
97
+ refresh_payment_with_failure_handling(follow_location, refresh_options || options) do
98
+ self.class.post "#{Payment::KILLBILL_API_PAYMENTS_PREFIX}/refunds",
99
+ to_json,
100
+ {},
101
+ {
102
+ :user => user,
103
+ :reason => reason,
104
+ :comment => comment,
105
+ }.merge(options)
106
+ end
107
+ end
108
+
95
109
  def void(user = nil, reason = nil, comment = nil, options = {}, refresh_options = nil)
96
110
  follow_location = delete_follow_location(options)
97
111
  refresh_payment_with_failure_handling(follow_location, refresh_options || options) do
@@ -138,6 +152,34 @@ module KillBillClient
138
152
  }.merge(options)
139
153
  end
140
154
 
155
+ def chargeback_by_external_key(user = nil, reason = nil, comment = nil, options = {}, refresh_options = nil)
156
+ follow_location = delete_follow_location(options)
157
+ refresh_payment_with_failure_handling(follow_location, refresh_options || options) do
158
+ self.class.post "#{follow_up_path(payment_id)}/chargebacks",
159
+ to_json,
160
+ {},
161
+ {
162
+ :user => user,
163
+ :reason => reason,
164
+ :comment => comment,
165
+ }.merge(options)
166
+ end
167
+ end
168
+
169
+ def chargeback_reversals(user = nil, reason = nil, comment = nil, options = {}, refresh_options = nil)
170
+ follow_location = delete_follow_location(options)
171
+ refresh_payment_with_failure_handling(follow_location, refresh_options || options) do
172
+ self.class.post "#{follow_up_path(payment_id)}/chargebackReversals",
173
+ to_json,
174
+ {},
175
+ {
176
+ :user => user,
177
+ :reason => reason,
178
+ :comment => comment,
179
+ }.merge(options)
180
+ end
181
+ end
182
+
141
183
  private
142
184
 
143
185
 
@@ -1,7 +1,7 @@
1
1
  module KillBillClient
2
2
  module Version
3
3
  MAJOR = 2
4
- MINOR = 1
4
+ MINOR = 2
5
5
  PATCH = 0
6
6
  PRE = nil
7
7
 
@@ -1,11 +1,21 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe KillBillClient::Model do
4
+ before do
5
+ KillBillClient.api_key = Time.now.to_i.to_s + rand(100).to_s
6
+ KillBillClient.api_secret = KillBillClient.api_key
7
+
8
+ tenant = KillBillClient::Model::Tenant.new
9
+ tenant.api_key = KillBillClient.api_key
10
+ tenant.api_secret = KillBillClient.api_secret
11
+ tenant.create(true, 'KillBill Spec test')
12
+ end
13
+
4
14
  it 'should manipulate accounts', :integration => true do
5
15
  # In case the remote server has lots of data
6
16
  search_limit = 100000
7
17
 
8
- external_key = Time.now.to_i.to_s
18
+ external_key = SecureRandom.uuid.to_s
9
19
 
10
20
  account = KillBillClient::Model::Account.new
11
21
  account.name = 'KillBillClient'
@@ -84,8 +94,8 @@ describe KillBillClient::Model do
84
94
  # Add/Remove a custom field
85
95
  expect(account.custom_fields.size).to eq(0)
86
96
  custom_field = KillBillClient::Model::CustomField.new
87
- custom_field.name = Time.now.to_i.to_s
88
- custom_field.value = Time.now.to_i.to_s
97
+ custom_field.name = SecureRandom.uuid.to_s
98
+ custom_field.value = SecureRandom.uuid.to_s
89
99
  account.add_custom_field(custom_field, 'KillBill Spec test')
90
100
  custom_fields = account.custom_fields
91
101
  expect(custom_fields.size).to eq(1)
@@ -175,8 +185,8 @@ describe KillBillClient::Model do
175
185
  sleep(1) if retries > 0
176
186
  account = KillBillClient::Model::Account.find_by_id account.account_id, true
177
187
  expect(account.account_balance).to eq(0)
178
- rescue => e
179
- if (retries += 1) < 6
188
+ rescue Exception => e
189
+ if (retries += 1) < 15
180
190
  retry
181
191
  else
182
192
  raise e
@@ -243,8 +253,8 @@ describe KillBillClient::Model do
243
253
  # Add/Remove an invoice payment custom field
244
254
  expect(invoice_payment.custom_fields.size).to eq(0)
245
255
  custom_field = KillBillClient::Model::CustomField.new
246
- custom_field.name = Time.now.to_i.to_s
247
- custom_field.value = Time.now.to_i.to_s
256
+ custom_field.name = SecureRandom.uuid.to_s
257
+ custom_field.value = SecureRandom.uuid.to_s
248
258
  invoice_payment.add_custom_field(custom_field, 'KillBill Spec test')
249
259
  custom_fields = invoice_payment.custom_fields
250
260
  expect(custom_fields.size).to eq(1)
@@ -289,7 +299,7 @@ describe KillBillClient::Model do
289
299
  new_credit.effective_date = "2013-09-30"
290
300
  new_credit.account_id = account.account_id
291
301
 
292
- expect { new_credit.create 'KillBill Spec test' }.to raise_error(KillBillClient::API::BadRequest)
302
+ expect { new_credit.create(true, 'KillBill Spec test') }.to raise_error(KillBillClient::API::BadRequest)
293
303
 
294
304
  # Verify the invoice item of the credit
295
305
  invoice = KillBillClient::Model::Invoice.find_by_id_or_number invoice_id
@@ -302,7 +312,7 @@ describe KillBillClient::Model do
302
312
  # Create a subscription
303
313
  sub = KillBillClient::Model::Subscription.new
304
314
  sub.account_id = account.account_id
305
- sub.external_key = Time.now.to_i.to_s
315
+ sub.external_key = SecureRandom.uuid.to_s
306
316
  sub.product_name = 'Sports'
307
317
  sub.product_category = 'BASE'
308
318
  sub.billing_period = 'MONTHLY'
@@ -336,12 +346,13 @@ describe KillBillClient::Model do
336
346
  expect(KillBillClient::Model::TagDefinition.all.size).to be > 0
337
347
  expect(KillBillClient::Model::TagDefinition.find_by_name('TEST').is_control_tag).to be_truthy
338
348
 
339
- tag_definition_name = Time.now.to_i.to_s
349
+ tag_definition_name = SecureRandom.uuid.to_s[0..9]
340
350
  expect(KillBillClient::Model::TagDefinition.find_by_name(tag_definition_name)).to be_nil
341
351
 
342
352
  tag_definition = KillBillClient::Model::TagDefinition.new
343
353
  tag_definition.name = tag_definition_name
344
354
  tag_definition.description = 'Tag for unit test'
355
+ tag_definition.applicable_object_types = [:ACCOUNT]
345
356
  expect(tag_definition.create('KillBill Spec test').id).not_to be_nil
346
357
 
347
358
  found_tag_definition = KillBillClient::Model::TagDefinition.find_by_name(tag_definition_name)
@@ -351,8 +362,8 @@ describe KillBillClient::Model do
351
362
  end
352
363
 
353
364
  it 'should manipulate tenants', :integration => true do
354
- api_key = Time.now.to_i.to_s + rand(100).to_s
355
- api_secret = 'S4cr3333333t!!!!!!lolz'
365
+ api_key = SecureRandom.uuid.to_s + rand(100).to_s
366
+ api_secret = api_key
356
367
 
357
368
  tenant = KillBillClient::Model::Tenant.new
358
369
  tenant.api_key = api_key
@@ -16,6 +16,11 @@ describe KillBillClient::Model::Resource do
16
16
  expect(payment2.purchased_amount).to eq(12.42)
17
17
  end
18
18
 
19
+ before do
20
+ KillBillClient.api_key = nil
21
+ KillBillClient.api_secret = nil
22
+ end
23
+
19
24
  describe '#require_multi_tenant_options!' do
20
25
  let(:message) { 'nothing' }
21
26
 
metadata CHANGED
@@ -1,36 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: killbill-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Killbill core team
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-06 00:00:00.000000000 Z
11
+ date: 2018-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- requirement: !ruby/object:Gem::Requirement
15
- requirements:
16
- - - ">="
17
- - !ruby/object:Gem::Version
18
- version: 1.2.0
19
- - - "<"
20
- - !ruby/object:Gem::Version
21
- version: 2.0.0
22
- name: json
23
- prerelease: false
24
- type: :runtime
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: 1.2.0
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: 2.0.0
33
- - !ruby/object:Gem::Dependency
14
+ name: rake
34
15
  requirement: !ruby/object:Gem::Requirement
35
16
  requirements:
36
17
  - - ">="
@@ -39,9 +20,8 @@ dependencies:
39
20
  - - "<"
40
21
  - !ruby/object:Gem::Version
41
22
  version: 11.0.0
42
- name: rake
43
- prerelease: false
44
23
  type: :development
24
+ prerelease: false
45
25
  version_requirements: !ruby/object:Gem::Requirement
46
26
  requirements:
47
27
  - - ">="
@@ -51,14 +31,14 @@ dependencies:
51
31
  - !ruby/object:Gem::Version
52
32
  version: 11.0.0
53
33
  - !ruby/object:Gem::Dependency
34
+ name: rspec
54
35
  requirement: !ruby/object:Gem::Requirement
55
36
  requirements:
56
37
  - - "~>"
57
38
  - !ruby/object:Gem::Version
58
39
  version: '3.4'
59
- name: rspec
60
- prerelease: false
61
40
  type: :development
41
+ prerelease: false
62
42
  version_requirements: !ruby/object:Gem::Requirement
63
43
  requirements:
64
44
  - - "~>"
@@ -70,9 +50,8 @@ executables: []
70
50
  extensions: []
71
51
  extra_rdoc_files: []
72
52
  files:
53
+ - ".circleci/config.yml"
73
54
  - ".gitignore"
74
- - ".travis-install-dependencies.sh"
75
- - ".travis.yml"
76
55
  - Gemfile
77
56
  - README.md
78
57
  - Rakefile
@@ -218,7 +197,7 @@ homepage: http://www.killbilling.org
218
197
  licenses:
219
198
  - Apache License (2.0)
220
199
  metadata: {}
221
- post_install_message:
200
+ post_install_message:
222
201
  rdoc_options:
223
202
  - "--exclude"
224
203
  - "."
@@ -235,9 +214,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
235
214
  - !ruby/object:Gem::Version
236
215
  version: '0'
237
216
  requirements: []
238
- rubyforge_project:
239
- rubygems_version: 2.4.8
240
- signing_key:
217
+ rubyforge_project:
218
+ rubygems_version: 2.6.13
219
+ signing_key:
241
220
  specification_version: 4
242
221
  summary: Kill Bill client library.
243
222
  test_files: []
@@ -1,81 +0,0 @@
1
- #!/usr/bin/env sh
2
-
3
- travis_retry() {
4
- local result=0
5
- local count=1
6
- while [ $count -le 3 ]; do
7
- [ $result -ne 0 ] && {
8
- echo -e "\n${ANSI_RED}The command \"$@\" failed. Retrying, $count of 3.${ANSI_RESET}\n" >&2
9
- }
10
- "$@" && { result=0 && break; } || result=$?
11
- count=$(($count + 1))
12
- sleep 1
13
- done
14
- [ $count -gt 3 ] && {
15
- echo -e "\n${ANSI_RED}The command \"$@\" failed 3 times.${ANSI_RESET}\n" >&2
16
- }
17
- return $result
18
- }
19
-
20
- sudo sysctl -w net.ipv4.tcp_fin_timeout=15
21
- sudo sysctl -w net.ipv4.tcp_tw_reuse=1
22
-
23
- if [ "$DB_ADAPTER" = 'mysql2' ] || [ "$DB_ADAPTER" = 'mariadb' ]; then
24
- mysql -u $DB_USER -e 'create database killbill;'
25
- curl 'http://docs.killbill.io/0.18/ddl.sql' | mysql -u $DB_USER killbill
26
- elif [ "$DB_ADAPTER" = 'postgresql' ]; then
27
- psql -U $DB_USER -c 'create database killbill;'
28
- curl 'https://raw.githubusercontent.com/killbill/killbill/master/util/src/main/resources/org/killbill/billing/util/ddl-postgresql.sql' | psql -U $DB_USER killbill
29
- curl 'https://raw.githubusercontent.com/killbill/killbill/master/util/src/main/resources/org/killbill/billing/util/ddl-postgresql.sql' | psql -U $DB_USER kaui_test
30
- curl 'http://docs.killbill.io/0.18/ddl.sql' | psql -U $DB_USER killbill
31
- fi
32
-
33
- travis_retry curl -L -O https://search.maven.org/remotecontent?filepath=org/kill-bill/billing/installer/kpm/0.6.0/kpm-0.6.0-linux-x86_64.tar.gz
34
- tar zxf kpm-0.6.0-linux-x86_64.tar.gz
35
- kpm-0.6.0-linux-x86_64/kpm install
36
-
37
- if [ "$DB_ADAPTER" = 'mysql2' ] || [ "$DB_ADAPTER" = 'mariadb' ]; then
38
- cat<<EOS >> conf/catalina.properties
39
- org.killbill.dao.url=jdbc:mysql://127.0.0.1:$DB_PORT/killbill
40
- org.killbill.billing.osgi.dao.url=jdbc:mysql://127.0.0.1:$DB_PORT/killbill
41
- EOS
42
- elif [ "$DB_ADAPTER" = 'postgresql' ]; then
43
- cat<<EOS >> conf/catalina.properties
44
- org.killbill.dao.url=jdbc:postgresql://127.0.0.1:$DB_PORT/killbill
45
- org.killbill.billing.osgi.dao.url=jdbc:postgresql://127.0.0.1:$DB_PORT/killbill
46
- EOS
47
- fi
48
-
49
- cat<<EOS >> conf/catalina.properties
50
- org.killbill.dao.user=$DB_USER
51
- org.killbill.dao.password=
52
- org.killbill.billing.osgi.dao.user=$DB_USER
53
- org.killbill.billing.osgi.dao.password=
54
- org.killbill.catalog.uri=SpyCarAdvanced.xml
55
- org.killbill.server.test.mode=true
56
- EOS
57
-
58
- ./bin/catalina.sh start
59
-
60
- TIME_LIMIT=$(( $(date +%s) + 120 ))
61
- RET=0
62
- while [ $RET != 201 -a $(date +%s) -lt $TIME_LIMIT ] ; do
63
- RET=$(curl -s \
64
- -o /dev/null \
65
- -w "%{http_code}" \
66
- -X POST \
67
- -u 'admin:password' \
68
- -H 'Content-Type:application/json' \
69
- -H 'X-Killbill-CreatedBy:admin' \
70
- -d '{"apiKey":"bob", "apiSecret":"lazar"}' \
71
- "http://127.0.0.1:8080/1.0/kb/tenants?useGlobalDefault=true")
72
- tail -50 logs/catalina.out
73
- sleep 5
74
- done
75
-
76
- # For Travis debugging
77
- echo "*** conf/catalina.properties"
78
- cat conf/catalina.properties
79
-
80
- echo "*** logs/catalina.out"
81
- tail -50 logs/catalina.out
@@ -1,44 +0,0 @@
1
- language: ruby
2
-
3
- sudo: required
4
- cache: bundler
5
-
6
- services:
7
- - mysql
8
-
9
- dist: trusty
10
-
11
- before_install:
12
- - jdk_switcher use openjdk8
13
- - gem update --system
14
- - gem update bundler
15
- - ./.travis-install-dependencies.sh
16
-
17
- before_script:
18
- - jdk_switcher use $JDK
19
-
20
- script: 'bundle exec rake test:spec test:remote:spec'
21
-
22
- notifications:
23
- email:
24
- - kill-bill-commits@googlegroups.com
25
-
26
- env:
27
- global:
28
- - DB_ADAPTER=mariadb DB_USER='root' DB_PORT=3306 JRUBY_OPTS='-J-Xmx1024m --debug -J-Djava.security.egd=file:/dev/./urandom'
29
-
30
- matrix:
31
- include:
32
- # Legacy environments
33
- - rvm: ree-1.8.7-2011.12
34
- - rvm: 1.8.7
35
- - rvm: 1.9.3
36
- # KPM
37
- - rvm: 2.2.2
38
- # Kaui
39
- - rvm: 2.4.2
40
- # Kaui standalone
41
- - rvm: jruby-9.1.14.0
42
- # Plugins
43
- - rvm: jruby-1.7.26
44
- fast_finish: true