killbill-chartmogul 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []