killbill-chartmogul 0.0.1

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.
data/pom.xml ADDED
@@ -0,0 +1,44 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ ~ Copyright 2016 The Billing Project, LLC
4
+ ~
5
+ ~ The Billing Project licenses this file to you under the Apache License, version 2.0
6
+ ~ (the "License"); you may not use this file except in compliance with the
7
+ ~ License. You may obtain a copy of the License at:
8
+ ~
9
+ ~ http://www.apache.org/licenses/LICENSE-2.0
10
+ ~
11
+ ~ Unless required by applicable law or agreed to in writing, software
12
+ ~ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13
+ ~ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14
+ ~ License for the specific language governing permissions and limitations
15
+ ~ under the License.
16
+ -->
17
+
18
+ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
19
+ <parent>
20
+ <groupId>org.sonatype.oss</groupId>
21
+ <artifactId>oss-parent</artifactId>
22
+ <version>5</version>
23
+ </parent>
24
+ <modelVersion>4.0.0</modelVersion>
25
+ <groupId>org.kill-bill.billing.plugin.ruby</groupId>
26
+ <artifactId>chartmogul-plugin</artifactId>
27
+ <packaging>pom</packaging>
28
+ <version>0.0.1</version>
29
+ <name>chartmogul-plugin</name>
30
+ <url>http://github.com/killbill/killbill-chartmogul-plugin</url>
31
+ <description>Plugin to mirror Kill Bill data into ChartMogul</description>
32
+ <licenses>
33
+ <license>
34
+ <name>Apache License 2.0</name>
35
+ <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
36
+ <distribution>repo</distribution>
37
+ </license>
38
+ </licenses>
39
+ <scm>
40
+ <connection>scm:git:git://github.com/killbill/killbill-chartmogul-plugin.git</connection>
41
+ <url>https://github.com/killbill/killbill-chartmogul-plugin/</url>
42
+ <developerConnection>scm:git:git@github.com:killbill/killbill-chartmogul-plugin.git</developerConnection>
43
+ </scm>
44
+ </project>
@@ -0,0 +1,41 @@
1
+ set -e
2
+
3
+ if [ "GNU" != "$(tar --help | grep GNU | head -1 | awk '{print $1}')" ]; then
4
+ echo "Unable to release: make sure to use GNU tar"
5
+ exit 1
6
+ fi
7
+
8
+ if $(ruby -e'require "java"'); then
9
+ # Good
10
+ echo "Detected JRuby"
11
+ else
12
+ echo "Unable to release: make sure to use JRuby"
13
+ exit 1
14
+ fi
15
+
16
+ VERSION=`grep -E '<version>([0-9]+\.[0-9]+\.[0-9]+)</version>' pom.xml | sed 's/[\t \n]*<version>\(.*\)<\/version>[\t \n]*/\1/'`
17
+ if [ "$VERSION" != "$(cat $PWD/VERSION)" ]; then
18
+ echo "Unable to release: make sure the versions in pom.xml and VERSION match"
19
+ exit 1
20
+ fi
21
+
22
+ echo "Cleaning up"
23
+ rake killbill:clean ; rake build
24
+
25
+ echo "Pushing the gem to Rubygems"
26
+ rake release
27
+
28
+ echo "Building artifact"
29
+ rake killbill:package
30
+
31
+ ARTIFACT="$PWD/pkg/killbill-chartmogul-$VERSION.tar.gz"
32
+ echo "Pushing $ARTIFACT to Maven Central"
33
+ mvn gpg:sign-and-deploy-file \
34
+ -DgroupId=org.kill-bill.billing.plugin.ruby \
35
+ -DartifactId=chartmogul-plugin \
36
+ -Dversion=$VERSION \
37
+ -Dpackaging=tar.gz \
38
+ -DrepositoryId=ossrh-releases \
39
+ -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ \
40
+ -Dfile=$ARTIFACT \
41
+ -DpomFile=pom.xml
@@ -0,0 +1,118 @@
1
+ require 'spec_helper'
2
+
3
+ class FakeJavaTenantUserApi
4
+
5
+ attr_accessor :per_tenant_config
6
+
7
+ def initialize(per_tenant_config = {})
8
+ @per_tenant_config = per_tenant_config
9
+ end
10
+
11
+ def get_tenant_values_for_key(key, context)
12
+ result = @per_tenant_config[context.tenant_id.to_s]
13
+ if result
14
+ return [result]
15
+ end
16
+ nil
17
+ end
18
+ end
19
+
20
+ describe Killbill::Chartmogul::ChartmogulPlugin do
21
+
22
+ let(:kb_tenant_id) do
23
+ SecureRandom.uuid
24
+ end
25
+
26
+ let(:kb_account) do
27
+ now = Time.now.to_i.to_s
28
+ external_key = now + '-test'
29
+ email = external_key + '@tester.com'
30
+
31
+ account = ::Killbill::Plugin::Model::Account.new
32
+ account.id = SecureRandom.uuid
33
+ account.external_key = external_key
34
+ account.email = email
35
+ account.name = "Integration spec #{now}"
36
+ account.currency = :USD
37
+
38
+ account
39
+ end
40
+
41
+ let(:standard_monthly) do
42
+ phase = ::Killbill::Plugin::Model::PlanPhase.new
43
+ phase.name = 'standard-monthly'
44
+ phase.phase_type = :EVERGREEN
45
+ phase.recurring = ::Killbill::Plugin::Model::Recurring.new
46
+ phase.recurring.billing_period = :MONTHLY
47
+ phase
48
+ end
49
+
50
+ let(:standard_annual) do
51
+ phase = ::Killbill::Plugin::Model::PlanPhase.new
52
+ phase.name = 'standard-annual'
53
+ phase.phase_type = :EVERGREEN
54
+ phase.recurring = ::Killbill::Plugin::Model::Recurring.new
55
+ phase.recurring.billing_period = :ANNUAL
56
+ phase
57
+ end
58
+
59
+ let(:invoice) do
60
+ invoice = ::Killbill::Plugin::Model::Invoice.new
61
+ invoice.id = SecureRandom.uuid
62
+ invoice.invoice_items = [recurring_item]
63
+ invoice
64
+ end
65
+
66
+ let(:recurring_item) do
67
+ item = ::Killbill::Plugin::Model::InvoiceItem.new
68
+ item.id = SecureRandom.uuid
69
+ item.amount = 10
70
+ item.currency = :USD
71
+ item.invoice_item_type = :RECURRING
72
+ item
73
+ end
74
+
75
+ before(:each) do
76
+ @plugin = Killbill::Chartmogul::ChartmogulPlugin.new
77
+ @plugin.conf_dir = File.expand_path(File.dirname(__FILE__) + '../../../../')
78
+
79
+ logger = Logger.new(STDOUT)
80
+ logger.level = Logger::DEBUG
81
+ @plugin.logger = logger
82
+
83
+ tenant_user_api = FakeJavaTenantUserApi.new
84
+ tenant_user_api.per_tenant_config[kb_tenant_id] = {:chartmogul => {:account_token => ENV['ACCOUNT_TOKEN'], :secret_key => ENV['SECRET_KEY']}}.to_yaml
85
+
86
+ svcs = {:tenant_user_api => tenant_user_api}
87
+ @plugin.kb_apis = Killbill::Plugin::KillbillApi.new('chartmogul', svcs)
88
+
89
+ @plugin.start_plugin
90
+ end
91
+
92
+ after(:each) do
93
+ @plugin.stop_plugin
94
+ end
95
+
96
+ it 'should be able to create and update data' do
97
+ updater = @plugin.initializer.updater(kb_tenant_id)
98
+
99
+ ds = updater.first_or_create_datasource
100
+ ds.uuid.should_not be_nil
101
+ updater.first_or_create_datasource.uuid.should == ds.uuid
102
+
103
+ customer = updater.first_or_create_customer(kb_account, ds)
104
+ customer.uuid.should_not be_nil
105
+ customer.external_id.should == kb_account.external_key
106
+ updater.first_or_create_customer(kb_account, ds).uuid.should == customer.uuid
107
+
108
+ monthly = updater.first_or_create_plan(standard_monthly, ds)
109
+ monthly.uuid.should_not be_nil
110
+ monthly.external_id.should == 'standard-monthly'
111
+ updater.first_or_create_plan(standard_monthly, ds).uuid.should == monthly.uuid
112
+
113
+ yearly = updater.first_or_create_plan(standard_annual, ds)
114
+ yearly.uuid.should_not be_nil
115
+ yearly.external_id.should == 'standard-annual'
116
+ updater.first_or_create_plan(standard_annual, ds).uuid.should == yearly.uuid
117
+ end
118
+ end
@@ -0,0 +1,10 @@
1
+ require 'bundler'
2
+ require 'chart_mogul'
3
+ require 'logger'
4
+ require 'rspec'
5
+
6
+ RSpec.configure do |config|
7
+ config.color_enabled = true
8
+ config.tty = true
9
+ config.formatter = 'documentation'
10
+ end
metadata ADDED
@@ -0,0 +1,306 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: killbill-chartmogul
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Kill Bill core team
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-12-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '8.1'
19
+ name: killbill
20
+ prerelease: false
21
+ type: :runtime
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '8.1'
27
+ - !ruby/object:Gem::Dependency
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '0.1'
33
+ name: chartmogul-ruby
34
+ prerelease: false
35
+ type: :runtime
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.1'
41
+ - !ruby/object:Gem::Dependency
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: 1.3.4
47
+ name: sinatra
48
+ prerelease: false
49
+ type: :runtime
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 1.3.4
55
+ - !ruby/object:Gem::Dependency
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: 0.3.4
61
+ name: thread_safe
62
+ prerelease: false
63
+ type: :runtime
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.3.4
69
+ - !ruby/object:Gem::Dependency
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: 4.1.0
75
+ name: activerecord
76
+ prerelease: false
77
+ type: :runtime
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 4.1.0
83
+ - !ruby/object:Gem::Dependency
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '0.3'
89
+ name: activerecord-bogacs
90
+ prerelease: false
91
+ type: :runtime
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.3'
97
+ - !ruby/object:Gem::Dependency
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '1.3'
103
+ name: activerecord-jdbc-adapter
104
+ prerelease: false
105
+ type: :runtime
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.3'
111
+ - !ruby/object:Gem::Dependency
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: 0.9.6
117
+ name: jruby-openssl
118
+ prerelease: false
119
+ type: :runtime
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 0.9.6
125
+ - !ruby/object:Gem::Dependency
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: 4.1.0
131
+ name: actionpack
132
+ prerelease: false
133
+ type: :runtime
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 4.1.0
139
+ - !ruby/object:Gem::Dependency
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: 4.1.0
145
+ name: actionview
146
+ prerelease: false
147
+ type: :runtime
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 4.1.0
153
+ - !ruby/object:Gem::Dependency
154
+ requirement: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: 1.1.0
159
+ name: monetize
160
+ prerelease: false
161
+ type: :runtime
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: 1.1.0
167
+ - !ruby/object:Gem::Dependency
168
+ requirement: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: 6.5.1
173
+ name: money
174
+ prerelease: false
175
+ type: :runtime
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: 6.5.1
181
+ - !ruby/object:Gem::Dependency
182
+ requirement: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: 0.9.2
187
+ name: jbundler
188
+ prerelease: false
189
+ type: :development
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: 0.9.2
195
+ - !ruby/object:Gem::Dependency
196
+ requirement: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - ">="
199
+ - !ruby/object:Gem::Version
200
+ version: 10.0.0
201
+ name: rake
202
+ prerelease: false
203
+ type: :development
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: 10.0.0
209
+ - !ruby/object:Gem::Dependency
210
+ requirement: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: 2.12.0
215
+ name: rspec
216
+ prerelease: false
217
+ type: :development
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: 2.12.0
223
+ - !ruby/object:Gem::Dependency
224
+ requirement: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - "~>"
227
+ - !ruby/object:Gem::Version
228
+ version: '3.7'
229
+ name: jdbc-sqlite3
230
+ prerelease: false
231
+ type: :development
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - "~>"
235
+ - !ruby/object:Gem::Version
236
+ version: '3.7'
237
+ - !ruby/object:Gem::Dependency
238
+ requirement: !ruby/object:Gem::Requirement
239
+ requirements:
240
+ - - "~>"
241
+ - !ruby/object:Gem::Version
242
+ version: '1.1'
243
+ name: jdbc-mariadb
244
+ prerelease: false
245
+ type: :development
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - "~>"
249
+ - !ruby/object:Gem::Version
250
+ version: '1.1'
251
+ description: Kill Bill notification plugin for ChartMogul.
252
+ email: killbilling-users@googlegroups.com
253
+ executables: []
254
+ extensions: []
255
+ extra_rdoc_files: []
256
+ files:
257
+ - ".gitignore"
258
+ - ".travis.yml"
259
+ - Gemfile
260
+ - Gemfile.lock
261
+ - Jarfile
262
+ - Jarfile.lock
263
+ - LICENSE
264
+ - NEWS
265
+ - README.md
266
+ - Rakefile
267
+ - VERSION
268
+ - chartmogul.yml
269
+ - config.ru
270
+ - killbill-chartmogul.gemspec
271
+ - killbill.properties
272
+ - lib/chart_mogul.rb
273
+ - lib/chart_mogul/application.rb
274
+ - lib/chart_mogul/updater.rb
275
+ - lib/chart_mogul/updater_initializer.rb
276
+ - pom.xml
277
+ - release.sh
278
+ - spec/chartmogul/remote/integration_spec.rb
279
+ - spec/spec_helper.rb
280
+ homepage: http://killbill.io
281
+ licenses:
282
+ - Apache License (2.0)
283
+ metadata: {}
284
+ post_install_message:
285
+ rdoc_options:
286
+ - "--exclude"
287
+ - "."
288
+ require_paths:
289
+ - lib
290
+ required_ruby_version: !ruby/object:Gem::Requirement
291
+ requirements:
292
+ - - ">="
293
+ - !ruby/object:Gem::Version
294
+ version: '2'
295
+ required_rubygems_version: !ruby/object:Gem::Requirement
296
+ requirements:
297
+ - - ">="
298
+ - !ruby/object:Gem::Version
299
+ version: '0'
300
+ requirements: []
301
+ rubyforge_project:
302
+ rubygems_version: 2.4.8
303
+ signing_key:
304
+ specification_version: 4
305
+ summary: Plugin to mirror Kill Bill data into ChartMogul
306
+ test_files: []