kpm 0.7.1 → 0.7.2
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 +4 -4
- data/lib/kpm/account.rb +4 -2
- data/lib/kpm/base_artifact.rb +15 -5
- data/lib/kpm/base_installer.rb +2 -1
- data/lib/kpm/database.rb +10 -1
- data/lib/kpm/diagnostic_file.rb +1 -0
- data/lib/kpm/killbill_server_artifact.rb +20 -7
- data/lib/kpm/plugins_directory.rb +6 -2
- data/lib/kpm/plugins_directory.yml +11 -7
- data/lib/kpm/sha1_checker.rb +28 -0
- data/lib/kpm/tasks.rb +6 -6
- data/lib/kpm/version.rb +1 -1
- data/pom.xml +1 -1
- data/spec/kpm/remote/base_artifact_spec.rb +19 -3
- data/spec/kpm/remote/installer_spec.rb +3 -2
- data/spec/kpm/remote/killbill_server_artifact_spec.rb +23 -7
- data/spec/kpm/unit_mysql/account_spec.rb +21 -5
- 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: c651b2089fe9f33b3484e82dcdb4471980b6f4ad
|
4
|
+
data.tar.gz: 8c746fc62e9332919f0082ffd25b96d450a91d64
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c0da2ef993caf070b2aaa3840e75220c1c9f26f4490bd3a2f5a3c4ca309de9a431e7198600733c2db317e2e2bff557438c447a753ddabc6f08f0c98f21ca4a09
|
7
|
+
data.tar.gz: 859900d8b192dd29cdd7f0ecd925b527654e397baac2c0771e7c145876da58ef03ea0508cc4ac5b3fb3595e1017d7820e0203487e28dfbb13aaf1b17c7de05ad
|
data/lib/kpm/account.rb
CHANGED
@@ -39,7 +39,7 @@ module KPM
|
|
39
39
|
|
40
40
|
DATE_COLUMNS_TO_FIX = ['created_date','updated_date','processing_available_date','effective_date',
|
41
41
|
'boot_date','start_timestamp','last_access_time','payment_date','original_created_date',
|
42
|
-
'last_sys_update_date','charged_through_date','bundle_start_date','start_date']
|
42
|
+
'last_sys_update_date','charged_through_date','bundle_start_date','start_date', 'reference_time']
|
43
43
|
|
44
44
|
# round trip constants duplicate record
|
45
45
|
ROUND_TRIP_EXPORT_IMPORT_MAP = {:accounts => {:id => :accounts_id, :external_key => :accounts_id}, :all => {:account_id => :accounts_id},
|
@@ -109,6 +109,7 @@ module KPM
|
|
109
109
|
end
|
110
110
|
|
111
111
|
def import_data(source_file, tenant_record_id, skip_payment_methods, round_trip_export_import = false, generate_record_id = false)
|
112
|
+
source_file = File.expand_path(source_file)
|
112
113
|
|
113
114
|
@generate_record_id = generate_record_id
|
114
115
|
@tenant_record_id = tenant_record_id
|
@@ -119,7 +120,7 @@ module KPM
|
|
119
120
|
end
|
120
121
|
|
121
122
|
unless File.exist?(source_file)
|
122
|
-
raise Interrupt,
|
123
|
+
raise Interrupt, "File #{source_file} does not exist"
|
123
124
|
end
|
124
125
|
|
125
126
|
@delimiter = sniff_delimiter(source_file) || @delimiter
|
@@ -275,6 +276,7 @@ module KPM
|
|
275
276
|
|
276
277
|
row = []
|
277
278
|
|
279
|
+
@logger.debug "Processing table_name=#{table_name}, line=#{line}"
|
278
280
|
cols_names.each_with_index do |col_name, index|
|
279
281
|
sanitized_value = sanitize(table_name,col_name,cols[index], skip_payment_methods)
|
280
282
|
|
data/lib/kpm/base_artifact.rb
CHANGED
@@ -61,7 +61,7 @@ module KPM
|
|
61
61
|
|
62
62
|
def pull_and_put_in_place(logger, coordinate_map, plugin_name, destination_path=nil, skip_top_dir=true, sha1_file=nil, force_download=false, verify_sha1=true, overrides={}, ssl_verify=true)
|
63
63
|
# Build artifact info
|
64
|
-
artifact_info = artifact_info(logger, coordinate_map, overrides, ssl_verify)
|
64
|
+
artifact_info = artifact_info(logger, coordinate_map, sha1_file, force_download, overrides, ssl_verify)
|
65
65
|
artifact_info[:plugin_name] = plugin_name
|
66
66
|
populate_fs_info(artifact_info, destination_path)
|
67
67
|
|
@@ -168,19 +168,27 @@ module KPM
|
|
168
168
|
end
|
169
169
|
end
|
170
170
|
|
171
|
-
def artifact_info(logger, coordinate_map, overrides={}, ssl_verify=true)
|
171
|
+
def artifact_info(logger, coordinate_map, sha1_file=nil, force_download=false, overrides={}, ssl_verify=true)
|
172
172
|
info = {
|
173
173
|
:skipped => false
|
174
174
|
}
|
175
175
|
|
176
|
+
sha1_checker = sha1_file ? Sha1Checker.from_file(sha1_file) : nil
|
177
|
+
|
176
178
|
coordinates = KPM::Coordinates.build_coordinates(coordinate_map)
|
177
179
|
begin
|
178
180
|
nexus_info = nexus_remote(overrides, ssl_verify, logger).get_artifact_info(coordinates)
|
179
181
|
rescue KPM::NexusFacade::ArtifactMalformedException => e
|
180
|
-
raise StandardError.new("Invalid coordinates #{coordinate_map}")
|
182
|
+
raise StandardError.new("Invalid coordinates #{coordinate_map}: #{e}")
|
181
183
|
rescue StandardError => e
|
182
|
-
logger.warn("Unable to retrieve coordinates #{coordinate_map}")
|
183
|
-
|
184
|
+
logger.warn("Unable to retrieve coordinates #{coordinate_map}: #{e}")
|
185
|
+
cached_coordinates = sha1_checker ? sha1_checker.artifact_info(coordinates) : nil
|
186
|
+
if force_download || !cached_coordinates
|
187
|
+
raise e
|
188
|
+
else
|
189
|
+
# Use the cache
|
190
|
+
return cached_coordinates
|
191
|
+
end
|
184
192
|
end
|
185
193
|
|
186
194
|
xml = REXML::Document.new(nexus_info)
|
@@ -189,6 +197,8 @@ module KPM
|
|
189
197
|
info[:repository_path] = xml.elements['//repositoryPath'].text unless xml.elements['//repositoryPath'].nil?
|
190
198
|
info[:is_tgz] = info[:repository_path].end_with?('.tar.gz') || info[:repository_path].end_with?('.tgz')
|
191
199
|
|
200
|
+
sha1_checker.cache_artifact_info(coordinates, info) if sha1_checker
|
201
|
+
|
192
202
|
info
|
193
203
|
end
|
194
204
|
|
data/lib/kpm/base_installer.rb
CHANGED
@@ -223,7 +223,8 @@ module KPM
|
|
223
223
|
|
224
224
|
version = specified_version
|
225
225
|
if version.nil? || version == LATEST_VERSION
|
226
|
-
|
226
|
+
sha1_file = "#{bundles_dir}/#{SHA1_FILENAME}"
|
227
|
+
info = KPM::KillbillServerArtifact.info(kb_version || LATEST_VERSION, sha1_file, force_download, verify_sha1, @nexus_config, @nexus_ssl_verify)
|
227
228
|
version = info['killbill-platform']
|
228
229
|
end
|
229
230
|
version ||= LATEST_VERSION
|
data/lib/kpm/database.rb
CHANGED
@@ -102,7 +102,16 @@ module KPM
|
|
102
102
|
|
103
103
|
rows = []
|
104
104
|
table[:rows].each do |row|
|
105
|
-
rows << row.map
|
105
|
+
rows << row.map do |value|
|
106
|
+
if value.is_a?(Symbol)
|
107
|
+
value.to_s
|
108
|
+
else
|
109
|
+
escaped_value = value.to_s.gsub(/['"]/, "'" => "\\'", '"' => '\\"')
|
110
|
+
.gsub('\N{LINE FEED}', "\n")
|
111
|
+
.gsub('\N{VERTICAL LINE}', "|")
|
112
|
+
"'#{escaped_value}'"
|
113
|
+
end
|
114
|
+
end.join(",")
|
106
115
|
end
|
107
116
|
|
108
117
|
value_data = rows.map{|row| "(#{row})" }.join(",")
|
data/lib/kpm/diagnostic_file.rb
CHANGED
@@ -13,12 +13,14 @@ module KPM
|
|
13
13
|
versions
|
14
14
|
end
|
15
15
|
|
16
|
-
def info(version='LATEST', overrides={}, ssl_verify=true)
|
16
|
+
def info(version='LATEST', sha1_file=nil, force_download=false, verify_sha1=true, overrides={}, ssl_verify=true)
|
17
17
|
logger = Logger.new(STDOUT)
|
18
18
|
logger.level = Logger::ERROR
|
19
19
|
|
20
20
|
version = KPM::Installer.get_kb_latest_stable_version if version == 'LATEST'
|
21
21
|
|
22
|
+
sha1_checker = sha1_file ? Sha1Checker.from_file(sha1_file) : nil
|
23
|
+
|
22
24
|
versions = {}
|
23
25
|
Dir.mktmpdir do |dir|
|
24
26
|
# Retrieve the main Kill Bill pom
|
@@ -29,9 +31,9 @@ module KPM
|
|
29
31
|
nil,
|
30
32
|
version,
|
31
33
|
dir,
|
32
|
-
|
33
|
-
|
34
|
-
|
34
|
+
sha1_file,
|
35
|
+
force_download,
|
36
|
+
verify_sha1,
|
35
37
|
overrides,
|
36
38
|
ssl_verify)
|
37
39
|
|
@@ -51,9 +53,9 @@ module KPM
|
|
51
53
|
nil,
|
52
54
|
oss_parent_version,
|
53
55
|
dir,
|
54
|
-
|
55
|
-
|
56
|
-
|
56
|
+
sha1_file,
|
57
|
+
force_download,
|
58
|
+
verify_sha1,
|
57
59
|
overrides,
|
58
60
|
ssl_verify)
|
59
61
|
|
@@ -62,8 +64,19 @@ module KPM
|
|
62
64
|
%w(killbill-api killbill-plugin-api killbill-commons killbill-platform).each do |property|
|
63
65
|
versions[property] = properties_element.elements["#{property}.version"].text
|
64
66
|
end
|
67
|
+
|
68
|
+
sha1_checker.cache_killbill_info(version, versions) if sha1_checker
|
65
69
|
end
|
66
70
|
versions
|
71
|
+
rescue StandardError => e
|
72
|
+
# Network down? Hopefully, we have something in the cache
|
73
|
+
cached_version = sha1_checker ? sha1_checker.killbill_info(version) : nil
|
74
|
+
if force_download || !cached_version
|
75
|
+
raise e
|
76
|
+
else
|
77
|
+
# Use the cache
|
78
|
+
return cached_version
|
79
|
+
end
|
67
80
|
end
|
68
81
|
end
|
69
82
|
end
|
@@ -6,7 +6,12 @@ module KPM
|
|
6
6
|
def self.all(latest=false)
|
7
7
|
if latest
|
8
8
|
# Look at GitHub (source of truth)
|
9
|
-
|
9
|
+
begin
|
10
|
+
source = URI.parse('https://raw.githubusercontent.com/killbill/killbill-cloud/master/kpm/lib/kpm/plugins_directory.yml').read
|
11
|
+
rescue StandardError
|
12
|
+
# Default to built-in version if GitHub isn't accessible
|
13
|
+
return self.all(false)
|
14
|
+
end
|
10
15
|
YAML.load(source)
|
11
16
|
else
|
12
17
|
source = File.join(File.expand_path(File.dirname(__FILE__)), 'plugins_directory.yml')
|
@@ -19,7 +24,6 @@ module KPM
|
|
19
24
|
all(latest).inject({}) { |out, (key, val)| out[key]=val[:versions][kb_version.to_sym] if val[:versions].key?(kb_version.to_sym) ; out}
|
20
25
|
end
|
21
26
|
|
22
|
-
# Note: this API is used in Docker images (see kpm_generator.rb, careful when changing it!)
|
23
27
|
def self.lookup(raw_plugin_key, latest=false, raw_kb_version=nil)
|
24
28
|
plugin_key = raw_plugin_key.to_s.downcase
|
25
29
|
plugin = all(latest)[plugin_key.to_sym]
|
@@ -16,8 +16,9 @@
|
|
16
16
|
:0.15: 0.2.1
|
17
17
|
:0.16: 0.3.2
|
18
18
|
:0.17: 0.4.10
|
19
|
-
:0.18: 0.5.
|
19
|
+
:0.18: 0.5.18
|
20
20
|
:0.19: 0.6.0
|
21
|
+
:0.20: 0.7.0
|
21
22
|
:require:
|
22
23
|
- :org.killbill.billing.plugin.adyen.merchantAccount
|
23
24
|
- :org.killbill.billing.plugin.adyen.username
|
@@ -32,7 +33,8 @@
|
|
32
33
|
:0.17: 4.0.5
|
33
34
|
:0.18: 4.2.5
|
34
35
|
:0.19: 5.1.4
|
35
|
-
:0.20: 6.0.
|
36
|
+
:0.20: 6.0.1
|
37
|
+
:0.21: 7.0.1
|
36
38
|
:avatax:
|
37
39
|
:type: :java
|
38
40
|
:versions:
|
@@ -41,7 +43,8 @@
|
|
41
43
|
:0.16: 0.3.0
|
42
44
|
:0.18: 0.4.1
|
43
45
|
:0.19: 0.5.1
|
44
|
-
:0.20: 0.6.
|
46
|
+
:0.20: 0.6.1
|
47
|
+
:0.21: 0.7.0
|
45
48
|
:require:
|
46
49
|
- :org.killbill.billing.plugin.avatax.url
|
47
50
|
- :org.killbill.billing.plugin.avatax.accountNumber
|
@@ -91,7 +94,7 @@
|
|
91
94
|
:0.16: 0.2.0
|
92
95
|
:0.18: 0.3.1
|
93
96
|
:0.19: 0.4.0
|
94
|
-
:0.20: 0.5.
|
97
|
+
:0.20: 0.5.1
|
95
98
|
:firstdata_e4:
|
96
99
|
:type: :ruby
|
97
100
|
:artifact_id: firstdata-e4-plugin
|
@@ -148,7 +151,7 @@
|
|
148
151
|
:type: :ruby
|
149
152
|
:versions:
|
150
153
|
:0.16: 0.0.2
|
151
|
-
:0.18: 0.1.
|
154
|
+
:0.18: 0.1.15
|
152
155
|
:require:
|
153
156
|
- :login
|
154
157
|
- :password
|
@@ -158,7 +161,8 @@
|
|
158
161
|
:artifact_id: bridge-plugin
|
159
162
|
:versions:
|
160
163
|
:0.19: 0.0.12
|
161
|
-
:0.20: 0.1.
|
164
|
+
:0.20: 0.1.2
|
165
|
+
:0.21: 0.2.0
|
162
166
|
:payeezy:
|
163
167
|
:type: :java
|
164
168
|
:versions:
|
@@ -223,7 +227,7 @@
|
|
223
227
|
:0.17: 4.0.0
|
224
228
|
:0.18: 4.1.1
|
225
229
|
:0.19: 5.0.0
|
226
|
-
:0.20: 6.0.
|
230
|
+
:0.20: 6.0.1
|
227
231
|
:require:
|
228
232
|
- :api_secret_key
|
229
233
|
:zendesk:
|
data/lib/kpm/sha1_checker.rb
CHANGED
@@ -39,8 +39,36 @@ module KPM
|
|
39
39
|
save!
|
40
40
|
end
|
41
41
|
|
42
|
+
def artifact_info(coordinates)
|
43
|
+
nexus_cache[coordinates]
|
44
|
+
end
|
45
|
+
|
46
|
+
def cache_artifact_info(coordinates, artifact_info)
|
47
|
+
# See BaseArtifact#artifact_info
|
48
|
+
nexus_keys = [:sha1, :version, :repository_path, :is_tgz]
|
49
|
+
nexus_cache[coordinates] = artifact_info ? artifact_info.select { |key,_| nexus_keys.include? key } : nil
|
50
|
+
save!
|
51
|
+
end
|
52
|
+
|
53
|
+
def killbill_info(version)
|
54
|
+
killbill_cache[version]
|
55
|
+
end
|
56
|
+
|
57
|
+
def cache_killbill_info(version, dependencies)
|
58
|
+
killbill_cache[version] = dependencies
|
59
|
+
save!
|
60
|
+
end
|
61
|
+
|
42
62
|
private
|
43
63
|
|
64
|
+
def nexus_cache
|
65
|
+
@sha1_config['nexus'] ||= {}
|
66
|
+
end
|
67
|
+
|
68
|
+
def killbill_cache
|
69
|
+
@sha1_config['killbill'] ||= {}
|
70
|
+
end
|
71
|
+
|
44
72
|
def save!
|
45
73
|
Dir.mktmpdir do |tmp_destination_dir|
|
46
74
|
tmp_file = File.join(tmp_destination_dir, File.basename(@sha1_file))
|
data/lib/kpm/tasks.rb
CHANGED
@@ -365,8 +365,11 @@ module KPM
|
|
365
365
|
say "Fetching info for version #{options[:version]}...\n"
|
366
366
|
|
367
367
|
versions_info = KillbillServerArtifact.info(options[:version],
|
368
|
-
|
369
|
-
|
368
|
+
options[:sha1_file],
|
369
|
+
options[:force_download],
|
370
|
+
options[:verify_sha1],
|
371
|
+
options[:overrides],
|
372
|
+
options[:ssl_verify])
|
370
373
|
say "Dependencies for version #{options[:version]}\n " + (versions_info.map {|k,v| "#{k} #{v}"}).join("\n "), :green
|
371
374
|
say "\n\n"
|
372
375
|
|
@@ -496,7 +499,6 @@ module KPM
|
|
496
499
|
:desc => 'Database port'
|
497
500
|
desc 'account', 'export/import accounts'
|
498
501
|
def account
|
499
|
-
logger.info 'Please wait processing the request!!!'
|
500
502
|
begin
|
501
503
|
config_file = nil
|
502
504
|
if options[:killbill_url] && /https?:\/\/[\S]+/.match(options[:killbill_url]).nil?
|
@@ -570,7 +572,6 @@ module KPM
|
|
570
572
|
:desc => 'Killbill URL ex. http://127.0.0.1:8080'
|
571
573
|
desc 'tenant_config', 'export all tenant-level configs.'
|
572
574
|
def tenant_config
|
573
|
-
logger.info 'Please wait processing the request!!!'
|
574
575
|
begin
|
575
576
|
|
576
577
|
if options[:killbill_url] && /https?:\/\/[\S]+/.match(options[:killbill_url]).nil?
|
@@ -657,7 +658,6 @@ module KPM
|
|
657
658
|
:desc => 'A different folder other than the default bundles directory.'
|
658
659
|
desc 'diagnostic', 'exports and \'zips\' the account data, system, logs and tenant configurations'
|
659
660
|
def diagnostic
|
660
|
-
logger.info 'Please wait processing the request!!!'
|
661
661
|
begin
|
662
662
|
if options[:account_export] && options[:account_export] == 'account_export'
|
663
663
|
raise Interrupt,'--account_export, please provide a valid account id'
|
@@ -711,7 +711,7 @@ module KPM
|
|
711
711
|
|
712
712
|
def logger
|
713
713
|
logger = ::Logger.new(STDOUT)
|
714
|
-
logger.level = Logger::INFO
|
714
|
+
logger.level = ENV['KPM_DEBUG'] ? Logger::DEBUG : Logger::INFO
|
715
715
|
logger
|
716
716
|
end
|
717
717
|
end
|
data/lib/kpm/version.rb
CHANGED
data/pom.xml
CHANGED
@@ -26,7 +26,7 @@
|
|
26
26
|
<groupId>org.kill-bill.billing.installer</groupId>
|
27
27
|
<artifactId>kpm</artifactId>
|
28
28
|
<packaging>pom</packaging>
|
29
|
-
<version>0.7.
|
29
|
+
<version>0.7.2</version>
|
30
30
|
<name>KPM</name>
|
31
31
|
<url>http://github.com/killbill/killbill-cloud</url>
|
32
32
|
<description>KPM: the Kill Bill Package Manager</description>
|
@@ -25,6 +25,23 @@ describe KPM::BaseArtifact do
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
+
it 'should be able to handle download errors' do
|
29
|
+
nexus_down = {:url => 'https://does.not.exist'}
|
30
|
+
Dir.mktmpdir do |dir|
|
31
|
+
sha1_file = "#{dir}/sha1.yml"
|
32
|
+
test_download dir, 'foo-oss.pom.xml', false, false, sha1_file
|
33
|
+
# Verify we skip the second time
|
34
|
+
test_download dir, 'foo-oss.pom.xml', true, false, sha1_file
|
35
|
+
# Verify the download is skipped gracefully when Nexus isn't reachable
|
36
|
+
test_download dir, 'foo-oss.pom.xml', true, false, sha1_file, nexus_down
|
37
|
+
# Verify the download fails when Nexus isn't reachable and force_download is set
|
38
|
+
expect { test_download dir, 'foo-oss.pom.xml', nil, true, sha1_file, nexus_down }.to raise_error(SocketError)
|
39
|
+
# Verify the download fails when Nexus isn't reachable and the Nexus cache is empty
|
40
|
+
KPM::Sha1Checker.from_file(sha1_file).cache_artifact_info('org.kill-bill.billing:killbill-oss-parent:pom:LATEST', nil)
|
41
|
+
expect { test_download dir, 'foo-oss.pom.xml', nil, false, sha1_file, nexus_down }.to raise_error(SocketError)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
28
45
|
it 'should be able to download and verify generic .tar.gz artifacts' do
|
29
46
|
# The artifact is not small unfortunately (23.7M)
|
30
47
|
group_id = 'org.kill-bill.billing'
|
@@ -66,11 +83,10 @@ describe KPM::BaseArtifact do
|
|
66
83
|
end
|
67
84
|
end
|
68
85
|
|
69
|
-
|
70
|
-
def test_download(dir, filename=nil, verify_is_skipped=false, force_download=false)
|
86
|
+
def test_download(dir, filename=nil, verify_is_skipped=false, force_download=false, sha1_file=nil, overrides={})
|
71
87
|
path = filename.nil? ? dir : dir + '/' + filename
|
72
88
|
|
73
|
-
info = KPM::BaseArtifact.pull(@logger, 'org.kill-bill.billing', 'killbill-oss-parent', 'pom', nil, 'LATEST', path,
|
89
|
+
info = KPM::BaseArtifact.pull(@logger, 'org.kill-bill.billing', 'killbill-oss-parent', 'pom', nil, 'LATEST', path, sha1_file, force_download, true, overrides, true)
|
74
90
|
info[:file_name].should == (filename.nil? ? "killbill-oss-parent-#{info[:version]}.pom" : filename)
|
75
91
|
info[:skipped].should == verify_is_skipped
|
76
92
|
if !info[:skipped]
|
@@ -67,7 +67,8 @@ describe KPM::Installer do
|
|
67
67
|
'version' => '1.8.7'
|
68
68
|
},
|
69
69
|
{
|
70
|
-
'name' => 'stripe'
|
70
|
+
'name' => 'stripe',
|
71
|
+
'version' => '3.0.3'
|
71
72
|
}]
|
72
73
|
}
|
73
74
|
},
|
@@ -147,7 +148,7 @@ describe KPM::Installer do
|
|
147
148
|
plugin_identifiers['stripe']['group_id'].should == 'org.kill-bill.billing.plugin.ruby'
|
148
149
|
plugin_identifiers['stripe']['artifact_id'].should == 'stripe-plugin'
|
149
150
|
plugin_identifiers['stripe']['packaging'].should == 'tar.gz'
|
150
|
-
plugin_identifiers['stripe']['version'].should
|
151
|
+
plugin_identifiers['stripe']['version'].should == '3.0.3'
|
151
152
|
plugin_identifiers['stripe']['language'].should == 'ruby'
|
152
153
|
end
|
153
154
|
end
|
@@ -30,12 +30,28 @@ describe KPM::KillbillServerArtifact do
|
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'should get dependencies information' do
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
33
|
+
nexus_down = {:url => 'https://does.not.exist'}
|
34
|
+
|
35
|
+
Dir.mktmpdir do |dir|
|
36
|
+
sha1_file = "#{dir}/sha1.yml"
|
37
|
+
info = KPM::KillbillServerArtifact.info('0.15.9', sha1_file)
|
38
|
+
info['killbill'].should == '0.15.9'
|
39
|
+
info['killbill-oss-parent'].should == '0.62'
|
40
|
+
info['killbill-api'].should == '0.27'
|
41
|
+
info['killbill-plugin-api'].should == '0.16'
|
42
|
+
info['killbill-commons'].should == '0.10'
|
43
|
+
info['killbill-platform'].should == '0.13'
|
44
|
+
KPM::Sha1Checker.from_file(sha1_file).killbill_info('0.15.9').should == info
|
45
|
+
|
46
|
+
# Verify the download is skipped gracefully when Nexus isn't reachable
|
47
|
+
KPM::KillbillServerArtifact.info('0.15.9', sha1_file, false, nil, nexus_down)
|
48
|
+
|
49
|
+
# Verify the download fails when Nexus isn't reachable and force_download is set
|
50
|
+
expect { KPM::KillbillServerArtifact.info('0.15.9', sha1_file, true, nil, nexus_down) }.to raise_error(SocketError)
|
51
|
+
|
52
|
+
# Verify the download fails when Nexus isn't reachable and the Nexus cache is empty
|
53
|
+
KPM::Sha1Checker.from_file(sha1_file).cache_killbill_info('0.15.9', nil)
|
54
|
+
expect { KPM::KillbillServerArtifact.info('0.15.9', sha1_file, false, nil, nexus_down) }.to raise_error(SocketError)
|
55
|
+
end
|
40
56
|
end
|
41
57
|
end
|
@@ -12,9 +12,9 @@ describe KPM::Account do
|
|
12
12
|
let(:account_id_invalid) {SecureRandom.uuid}
|
13
13
|
let(:dummy_data) {
|
14
14
|
"-- accounts record_id|id|external_key|email|name|first_name_length|currency|billing_cycle_day_local|parent_account_id|is_payment_delegated_to_parent|payment_method_id|time_zone|locale|address1|address2|company_name|city|state_or_province|country|postal_code|phone|notes|migrated|is_notified_for_invoices|created_date|created_by|updated_date|updated_by|tenant_record_id\n"\
|
15
|
-
"5|#{dummy_account_id}|#{dummy_account_id}|willharnet@example.com|Will Harnet||USD|0||||UTC
|
15
|
+
"5|#{dummy_account_id}|#{dummy_account_id}|willharnet@example.com|Will Harnet||USD|0||||UTC||||Company\\N{VERTICAL LINE}\\N{LINE FEED}Name||||||||false|2017-04-03T15:50:14.000+0000|demo|2017-04-05T15:01:39.000+0000|Killbill::Stripe::PaymentPlugin|2\n"\
|
16
16
|
"-- account_history record_id|id|target_record_id|external_key|email|name|first_name_length|currency|billing_cycle_day_local|parent_account_id|payment_method_id|is_payment_delegated_to_parent|time_zone|locale|address1|address2|company_name|city|state_or_province|country|postal_code|phone|notes|migrated|is_notified_for_invoices|change_type|created_by|created_date|updated_by|updated_date|tenant_record_id\n"\
|
17
|
-
"3|#{SecureRandom.uuid}|5|#{dummy_account_id}|willharnet@example.com|Will Harnet||USD|0||||UTC
|
17
|
+
"3|#{SecureRandom.uuid}|5|#{dummy_account_id}|willharnet@example.com|Will Harnet||USD|0||||UTC||||Company\\N{VERTICAL LINE}\\N{LINE FEED}Name||||||||false|INSERT|demo|2017-04-03T15:50:14.000+0000|demo|2017-04-03T15:50:14.000+0000|2\n"
|
18
18
|
}
|
19
19
|
let(:cols_names) {dummy_data.split("\n")[0].split(" ")[2]}
|
20
20
|
let(:cols_data) {dummy_data.split("\n")[1]}
|
@@ -303,7 +303,7 @@ describe KPM::Account do
|
|
303
303
|
end
|
304
304
|
|
305
305
|
it 'when importing data with no file' do
|
306
|
-
expect{account_class.import_data(dummy_data_file,nil,true,false,true) }.to raise_error(Interrupt,
|
306
|
+
expect{account_class.import_data(dummy_data_file,nil,true,false,true) }.to raise_error(Interrupt, "File #{dummy_data_file} does not exist")
|
307
307
|
end
|
308
308
|
|
309
309
|
it 'when importing data with new record_id' do
|
@@ -312,6 +312,8 @@ describe KPM::Account do
|
|
312
312
|
end
|
313
313
|
expect{account_class.import_data(dummy_data_file,nil,true,false,true) }.not_to raise_error(Interrupt)
|
314
314
|
|
315
|
+
verify_data(dummy_account_id)
|
316
|
+
|
315
317
|
row_count_inserted = delete_statement('accounts','id',dummy_account_id)
|
316
318
|
expect(row_count_inserted).to eq('1')
|
317
319
|
row_count_inserted = delete_statement('account_history','external_key',dummy_account_id)
|
@@ -324,6 +326,8 @@ describe KPM::Account do
|
|
324
326
|
end
|
325
327
|
expect{account_class.import_data(dummy_data_file,nil,true,false,false) }.not_to raise_error(Interrupt)
|
326
328
|
|
329
|
+
verify_data(dummy_account_id)
|
330
|
+
|
327
331
|
row_count_inserted = delete_statement('accounts','id',dummy_account_id)
|
328
332
|
expect(row_count_inserted).to eq('1')
|
329
333
|
row_count_inserted = delete_statement('account_history','external_key',dummy_account_id)
|
@@ -336,6 +340,8 @@ describe KPM::Account do
|
|
336
340
|
end
|
337
341
|
expect{account_class.import_data(dummy_data_file,10,true,false,true) }.not_to raise_error(Interrupt)
|
338
342
|
|
343
|
+
verify_data(dummy_account_id)
|
344
|
+
|
339
345
|
row_count_inserted = delete_statement('accounts','id',dummy_account_id)
|
340
346
|
expect(row_count_inserted).to eq('1')
|
341
347
|
row_count_inserted = delete_statement('account_history','external_key',dummy_account_id)
|
@@ -349,6 +355,8 @@ describe KPM::Account do
|
|
349
355
|
expect{account_class.import_data(dummy_data_file,10,true,true,true) }.not_to raise_error(Interrupt)
|
350
356
|
new_account_id = account_class.instance_variable_get(:@tables_id)
|
351
357
|
|
358
|
+
verify_data(new_account_id['accounts_id'])
|
359
|
+
|
352
360
|
row_count_inserted = delete_statement('accounts','id',new_account_id['accounts_id'])
|
353
361
|
expect(row_count_inserted).to eq('1')
|
354
362
|
row_count_inserted = delete_statement('account_history','external_key',new_account_id['accounts_id'])
|
@@ -389,8 +397,16 @@ describe KPM::Account do
|
|
389
397
|
|
390
398
|
$account_id
|
391
399
|
end
|
392
|
-
|
393
|
-
|
400
|
+
|
401
|
+
def verify_data(account_id)
|
402
|
+
response = `#{mysql_cli} #{db_name} -e "select company_name FROM accounts WHERE id = '#{account_id}';" 2>&1`
|
403
|
+
response_msg = response.split("\n")
|
404
|
+
company_name = response_msg[response_msg.size - 1]
|
405
|
+
|
406
|
+
expect(company_name).to eq("Company|\\nName")
|
407
|
+
end
|
408
|
+
|
409
|
+
def delete_statement(table_name,column_name,account_id)
|
394
410
|
response = `#{mysql_cli} #{db_name} -e "DELETE FROM #{table_name} WHERE #{column_name} = '#{account_id}'; SELECT ROW_COUNT();" 2>&1`
|
395
411
|
response_msg = response.split("\n")
|
396
412
|
row_count_inserted = response_msg[response_msg.size - 1]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kpm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.2
|
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:
|
11
|
+
date: 2019-05-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: highline
|