kpm 0.7.1 → 0.9.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.
Files changed (77) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +138 -0
  4. data/Gemfile +2 -0
  5. data/README.adoc +126 -109
  6. data/Rakefile +2 -1
  7. data/bin/kpm +4 -2
  8. data/kpm.gemspec +10 -8
  9. data/lib/kpm.rb +3 -0
  10. data/lib/kpm/account.rb +269 -337
  11. data/lib/kpm/base_artifact.rb +40 -36
  12. data/lib/kpm/base_installer.rb +71 -84
  13. data/lib/kpm/blob.rb +29 -0
  14. data/lib/kpm/cli.rb +3 -1
  15. data/lib/kpm/coordinates.rb +10 -12
  16. data/lib/kpm/database.rb +93 -103
  17. data/lib/kpm/diagnostic_file.rb +126 -146
  18. data/lib/kpm/formatter.rb +76 -48
  19. data/lib/kpm/inspector.rb +24 -34
  20. data/lib/kpm/installer.rb +53 -46
  21. data/lib/kpm/kaui_artifact.rb +4 -3
  22. data/lib/kpm/killbill_plugin_artifact.rb +10 -7
  23. data/lib/kpm/killbill_server_artifact.rb +24 -10
  24. data/lib/kpm/migrations.rb +26 -11
  25. data/lib/kpm/nexus_helper/actions.rb +45 -9
  26. data/lib/kpm/nexus_helper/github_api_calls.rb +70 -0
  27. data/lib/kpm/nexus_helper/nexus_api_calls_v2.rb +130 -108
  28. data/lib/kpm/nexus_helper/nexus_facade.rb +5 -3
  29. data/lib/kpm/plugins_directory.rb +14 -9
  30. data/lib/kpm/plugins_directory.yml +16 -175
  31. data/lib/kpm/plugins_manager.rb +29 -24
  32. data/lib/kpm/sha1_checker.rb +56 -15
  33. data/lib/kpm/system.rb +104 -135
  34. data/lib/kpm/system_helpers/cpu_information.rb +56 -55
  35. data/lib/kpm/system_helpers/disk_space_information.rb +60 -63
  36. data/lib/kpm/system_helpers/entropy_available.rb +37 -39
  37. data/lib/kpm/system_helpers/memory_information.rb +52 -51
  38. data/lib/kpm/system_helpers/os_information.rb +45 -47
  39. data/lib/kpm/system_helpers/system_proxy.rb +10 -10
  40. data/lib/kpm/tasks.rb +370 -443
  41. data/lib/kpm/tenant_config.rb +68 -83
  42. data/lib/kpm/tomcat_manager.rb +10 -8
  43. data/lib/kpm/trace_logger.rb +18 -16
  44. data/lib/kpm/uninstaller.rb +81 -14
  45. data/lib/kpm/utils.rb +13 -14
  46. data/lib/kpm/version.rb +3 -1
  47. data/packaging/Gemfile +2 -0
  48. data/pom.xml +1 -1
  49. data/spec/kpm/remote/base_artifact_spec.rb +33 -17
  50. data/spec/kpm/remote/base_installer_spec.rb +35 -34
  51. data/spec/kpm/remote/github_api_calls_spec.rb +40 -0
  52. data/spec/kpm/remote/installer_spec.rb +80 -78
  53. data/spec/kpm/remote/kaui_artifact_spec.rb +7 -6
  54. data/spec/kpm/remote/killbill_plugin_artifact_spec.rb +25 -30
  55. data/spec/kpm/remote/killbill_server_artifact_spec.rb +30 -13
  56. data/spec/kpm/remote/migrations_spec.rb +12 -11
  57. data/spec/kpm/remote/nexus_facade_spec.rb +32 -28
  58. data/spec/kpm/remote/tenant_config_spec.rb +30 -29
  59. data/spec/kpm/remote/tomcat_manager_spec.rb +4 -3
  60. data/spec/kpm/unit/actions_spec.rb +52 -0
  61. data/spec/kpm/unit/base_artifact_spec.rb +19 -18
  62. data/spec/kpm/unit/cpu_information_spec.rb +67 -0
  63. data/spec/kpm/unit/disk_space_information_spec.rb +47 -0
  64. data/spec/kpm/unit/entropy_information_spec.rb +36 -0
  65. data/spec/kpm/unit/formatter_spec.rb +163 -0
  66. data/spec/kpm/unit/inspector_spec.rb +34 -42
  67. data/spec/kpm/unit/installer_spec.rb +7 -6
  68. data/spec/kpm/unit/memory_information_spec.rb +102 -0
  69. data/spec/kpm/unit/os_information_spec.rb +38 -0
  70. data/spec/kpm/unit/plugins_directory_spec.rb +38 -22
  71. data/spec/kpm/unit/plugins_manager_spec.rb +62 -66
  72. data/spec/kpm/unit/sha1_checker_spec.rb +107 -60
  73. data/spec/kpm/unit/uninstaller_spec.rb +118 -72
  74. data/spec/kpm/unit_mysql/account_spec.rb +144 -143
  75. data/spec/spec_helper.rb +20 -18
  76. data/tasks/package.rake +18 -18
  77. metadata +26 -22
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'pathname'
2
4
  require 'rubygems/package'
3
5
  require 'zlib'
@@ -7,7 +9,7 @@ module KPM
7
9
  class << self
8
10
  TAR_LONGLINK = '././@LongLink'
9
11
 
10
- def unpack_tgz(tar_gz_archive, destination, skip_top_dir=false)
12
+ def unpack_tgz(tar_gz_archive, destination, skip_top_dir = false)
11
13
  top_dir = nil
12
14
  Gem::Package::TarReader.new(Zlib::GzipReader.open(tar_gz_archive)) do |tar|
13
15
  dest = nil
@@ -20,17 +22,17 @@ module KPM
20
22
 
21
23
  if entry.directory?
22
24
  File.delete dest if File.file? dest
23
- FileUtils.mkdir_p dest, :mode => entry.header.mode, :verbose => false
25
+ FileUtils.mkdir_p dest, mode: entry.header.mode, verbose: false
24
26
  elsif entry.file?
25
27
  FileUtils.rm_rf dest if File.directory? dest
26
- FileUtils.mkdir_p File.dirname(dest), :verbose => false
27
- File.open dest, "wb" do |f|
28
+ FileUtils.mkdir_p File.dirname(dest), verbose: false
29
+ File.open dest, 'wb' do |f|
28
30
  f.print entry.read
29
31
  end
30
- FileUtils.chmod entry.header.mode, dest, :verbose => false
32
+ FileUtils.chmod entry.header.mode, dest, verbose: false
31
33
  current_dir = File.dirname(dest)
32
34
  # In case there are two top dirs, keep the last one by convention
33
- top_dir = current_dir if (top_dir.nil? || top_dir.size >= current_dir.size)
35
+ top_dir = current_dir if top_dir.nil? || top_dir.size >= current_dir.size
34
36
  elsif entry.header.typeflag == '2' # Symlink
35
37
  File.symlink entry.header.linkname, dest
36
38
  end
@@ -48,9 +50,7 @@ module KPM
48
50
  file_names = []
49
51
  Gem::Package::TarReader.new(Zlib::GzipReader.open(tar_gz_archive)) do |tar|
50
52
  tar.each do |entry|
51
- if entry.file?
52
- file_names.push entry.full_name
53
- end
53
+ file_names.push entry.full_name if entry.file?
54
54
  end
55
55
  end
56
56
 
@@ -62,17 +62,17 @@ module KPM
62
62
  ver = get_version_from_file_path(file_path)
63
63
  ext = File.extname(base)
64
64
 
65
- name = base.gsub(ext,'')
65
+ name = base.gsub(ext, '')
66
66
  if ver.nil?
67
67
  # this will remove SNAPSHOT and any dash that appear before it (ex --SNAPSHOT).
68
- name = name.gsub(/((-+){,1}SNAPSHOT){,1}/,'')
68
+ name = name.gsub(/((-+){,1}SNAPSHOT){,1}/, '')
69
69
  last_dash = name.rindex('-')
70
70
  name = name[0..last_dash] unless last_dash.nil?
71
71
  else
72
- name = name.gsub(ver,'')
72
+ name = name.gsub(ver, '')
73
73
  end
74
74
 
75
- name = name[0..name.length-2] if name[-1].match(/[a-zA-z]/).nil?
75
+ name = name[0..name.length - 2] if name[-1].match(/[a-zA-z]/).nil?
76
76
  name
77
77
  end
78
78
 
@@ -84,7 +84,6 @@ module KPM
84
84
 
85
85
  ver[0]
86
86
  end
87
-
88
87
  end
89
88
  end
90
89
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module KPM
2
- VERSION = '0.7.1'
4
+ VERSION = '0.9.0'
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gem 'kpm', '~> VERSION'
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.1</version>
29
+ <version>0.9.0</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>
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe KPM::BaseArtifact do
4
-
5
6
  before(:all) do
6
7
  @logger = Logger.new(STDOUT)
7
8
  @logger.level = Logger::INFO
@@ -25,6 +26,25 @@ describe KPM::BaseArtifact do
25
26
  end
26
27
  end
27
28
 
29
+ it 'should be able to handle download errors' do
30
+ nexus_down = { url: 'https://does.not.exist' }
31
+ Dir.mktmpdir do |dir|
32
+ sha1_file = "#{dir}/sha1.yml"
33
+ test_download dir, 'foo-oss.pom.xml', false, false, sha1_file
34
+ # Verify we skip the second time
35
+ test_download dir, 'foo-oss.pom.xml', true, false, sha1_file
36
+ # Verify the download is skipped gracefully when Nexus isn't reachable
37
+ test_download dir, 'foo-oss.pom.xml', true, false, sha1_file, nexus_down
38
+ # Verify the download fails when Nexus isn't reachable and force_download is set
39
+ expect { test_download dir, 'foo-oss.pom.xml', nil, true, sha1_file, nexus_down }.to raise_exception(SocketError, /(Failed to open TCP connection to does.not.exist:443|getaddrinfo)/)
40
+ # Verify the download fails when Nexus isn't reachable and the Nexus cache is empty
41
+ expect(KPM::Sha1Checker.from_file(sha1_file).artifact_info('org.kill-bill.billing:killbill-oss-parent:pom:0.143.33')).to_not be_nil
42
+ KPM::Sha1Checker.from_file(sha1_file).remove_entry!('org.kill-bill.billing:killbill-oss-parent:pom:0.143.33')
43
+ expect(KPM::Sha1Checker.from_file(sha1_file).artifact_info('org.kill-bill.billing:killbill-oss-parent:pom:0.143.33')).to be_nil
44
+ expect { test_download dir, 'foo-oss.pom.xml', nil, false, sha1_file, nexus_down }.to raise_exception(SocketError, /(Failed to open TCP connection to does.not.exist:443|getaddrinfo)/)
45
+ end
46
+ end
47
+
28
48
  it 'should be able to download and verify generic .tar.gz artifacts' do
29
49
  # The artifact is not small unfortunately (23.7M)
30
50
  group_id = 'org.kill-bill.billing'
@@ -35,14 +55,14 @@ describe KPM::BaseArtifact do
35
55
 
36
56
  Dir.mktmpdir do |dir|
37
57
  info = KPM::BaseArtifact.pull(@logger, group_id, artifact_id, packaging, classifier, version, dir)
38
- info[:file_name].should be_nil
58
+ expect(info[:file_name]).to be_nil
39
59
 
40
60
  files_in_dir = Dir[info[:file_path] + '/*']
41
- files_in_dir.size.should == 20
61
+ expect(files_in_dir.size).to eq 20
42
62
 
43
- File.file?(info[:file_path] + '/killbill-osgi-bundles-jruby-0.11.3.jar').should be_true
63
+ expect(File.file?(info[:file_path] + '/killbill-osgi-bundles-jruby-0.11.3.jar')).to be_truthy
44
64
 
45
- info[:bundle_dir].should == info[:file_path]
65
+ expect(info[:bundle_dir]).to eq info[:file_path]
46
66
  end
47
67
  end
48
68
 
@@ -57,24 +77,20 @@ describe KPM::BaseArtifact do
57
77
 
58
78
  Dir.mktmpdir do |dir|
59
79
  first_take = KPM::BaseArtifact.pull(@logger, group_id, artifact_id, packaging, classifier, version, dir)
60
- File.file?(first_take[:file_path] + '/killbill-platform-osgi-bundles-jruby-0.36.2.jar').should be_true
80
+ expect(File.file?(first_take[:file_path] + '/killbill-platform-osgi-bundles-jruby-0.36.2.jar')).to be_truthy
61
81
 
62
82
  second_take = KPM::BaseArtifact.pull(@logger, group_id, artifact_id, packaging, classifier, second_bundle_version, dir)
63
- File.file?(first_take[:file_path] + '/killbill-platform-osgi-bundles-jruby-0.36.2.jar').should be_false
64
- File.file?(second_take[:file_path] + '/killbill-platform-osgi-bundles-jruby-0.36.10.jar').should be_true
65
-
83
+ expect(File.file?(first_take[:file_path] + '/killbill-platform-osgi-bundles-jruby-0.36.2.jar')).to be_falsey
84
+ expect(File.file?(second_take[:file_path] + '/killbill-platform-osgi-bundles-jruby-0.36.10.jar')).to be_truthy
66
85
  end
67
86
  end
68
87
 
69
-
70
- def test_download(dir, filename=nil, verify_is_skipped=false, force_download=false)
88
+ def test_download(dir, filename = nil, verify_is_skipped = false, force_download = false, sha1_file = nil, overrides = {})
71
89
  path = filename.nil? ? dir : dir + '/' + filename
72
90
 
73
- info = KPM::BaseArtifact.pull(@logger, 'org.kill-bill.billing', 'killbill-oss-parent', 'pom', nil, 'LATEST', path, nil, force_download, true, {}, true)
74
- info[:file_name].should == (filename.nil? ? "killbill-oss-parent-#{info[:version]}.pom" : filename)
75
- info[:skipped].should == verify_is_skipped
76
- if !info[:skipped]
77
- info[:size].should == File.size(info[:file_path])
78
- end
91
+ info = KPM::BaseArtifact.pull(@logger, 'org.kill-bill.billing', 'killbill-oss-parent', 'pom', nil, '0.143.33', path, sha1_file, force_download, true, overrides, true)
92
+ expect(info[:file_name]).to eq(filename.nil? ? "killbill-oss-parent-#{info[:version]}.pom" : filename)
93
+ expect(info[:skipped]).to eq verify_is_skipped
94
+ expect(info[:size]).to eq File.size(info[:file_path]) unless info[:skipped]
79
95
  end
80
96
  end
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'json'
3
5
 
4
6
  describe KPM::BaseInstaller do
5
-
6
7
  before(:all) do
7
8
  @logger = Logger.new(STDOUT)
8
9
  @logger.level = Logger::INFO
@@ -13,7 +14,7 @@ describe KPM::BaseInstaller do
13
14
  bundles_dir = dir + '/bundles'
14
15
  installer = KPM::BaseInstaller.new(@logger)
15
16
 
16
- info = installer.install_plugin('analytics', nil, nil, nil, nil, nil, '0.7.1', bundles_dir)
17
+ installer.install_plugin('analytics', nil, nil, nil, nil, nil, '0.7.1', bundles_dir)
17
18
 
18
19
  check_installation(bundles_dir)
19
20
 
@@ -46,25 +47,25 @@ describe KPM::BaseInstaller do
46
47
 
47
48
  begin
48
49
  installer.install_plugin('invalid', nil, nil, nil, nil, nil, '1.2.3', bundles_dir)
49
- fail "Should not succeed to install invalid plugin"
50
- rescue ArgumentError => e
50
+ raise 'Should not succeed to install invalid plugin'
51
+ rescue ArgumentError
52
+ # Expected
51
53
  end
52
54
  end
53
55
  end
54
56
 
55
57
  it 'should extract plugin name from file path' do
56
-
57
58
  [
58
- {:file_path => '/Somewhere/xxx-foo/target/xxx-1.0.0.jar', :expected => 'xxx'},
59
- {:file_path => '/Somewhere/xxx-foo/target/xxx-foo-bar-1.0.0.jar', :expected => 'xxx-foo-bar'},
60
- {:file_path => '/Somewhere/xxx-foo/target/xxx-foo-1.0.0.jar', :expected => 'xxx-foo'},
61
- {:file_path => '/Somewhere/xxx-foo/target/xxx-foo-1.0.0-SNAPSHOT.jar', :expected => 'xxx-foo'},
62
- {:file_path => '/Somewhere/xxx-foo/target/xxx-foo-1.0.jar', :expected => 'xxx-foo'},
63
- {:file_path => '/Somewhere/xxx-foo/target/xxx-foo-1.jar', :expected => 'xxx-foo'},
64
- {:file_path => '/Somewhere/xxx-foo/target/xxx-foo-abc-SNAPSHOT.jar', :expected => 'xxx-foo'},
65
- {:file_path => '/Somewhere/xxx-foo/target/xxx-foo-abc.jar', :expected => 'xxx-foo'}
59
+ { file_path: '/Somewhere/xxx-foo/target/xxx-1.0.0.jar', expected: 'xxx' },
60
+ { file_path: '/Somewhere/xxx-foo/target/xxx-foo-bar-1.0.0.jar', expected: 'xxx-foo-bar' },
61
+ { file_path: '/Somewhere/xxx-foo/target/xxx-foo-1.0.0.jar', expected: 'xxx-foo' },
62
+ { file_path: '/Somewhere/xxx-foo/target/xxx-foo-1.0.0-SNAPSHOT.jar', expected: 'xxx-foo' },
63
+ { file_path: '/Somewhere/xxx-foo/target/xxx-foo-1.0.jar', expected: 'xxx-foo' },
64
+ { file_path: '/Somewhere/xxx-foo/target/xxx-foo-1.jar', expected: 'xxx-foo' },
65
+ { file_path: '/Somewhere/xxx-foo/target/xxx-foo-abc-SNAPSHOT.jar', expected: 'xxx-foo' },
66
+ { file_path: '/Somewhere/xxx-foo/target/xxx-foo-abc.jar', expected: 'xxx-foo' }
66
67
  ].each do |test|
67
- KPM::Utils.get_plugin_name_from_file_path(test[:file_path]).should eq test[:expected]
68
+ expect(KPM::Utils.get_plugin_name_from_file_path(test[:file_path])).to eq test[:expected]
68
69
  end
69
70
  end
70
71
 
@@ -75,16 +76,16 @@ describe KPM::BaseInstaller do
75
76
 
76
77
  plugin_identifiers = read_plugin_identifiers(plugins_dir)
77
78
 
78
- plugin_identifiers.size.should == 1
79
+ expect(plugin_identifiers.size).to eq 1
79
80
 
80
- plugin_identifiers['analytics']['plugin_name'].should == 'analytics-plugin'
81
- plugin_identifiers['analytics']['group_id'].should == 'org.kill-bill.billing.plugin.java'
82
- plugin_identifiers['analytics']['artifact_id'].should == 'analytics-plugin'
83
- plugin_identifiers['analytics']['packaging'].should == 'jar'
84
- plugin_identifiers['analytics']['version'].should == '0.7.1'
85
- plugin_identifiers['analytics']['language'].should == 'java'
81
+ expect(plugin_identifiers['analytics']['plugin_name']).to eq 'analytics-plugin'
82
+ expect(plugin_identifiers['analytics']['group_id']).to eq 'org.kill-bill.billing.plugin.java'
83
+ expect(plugin_identifiers['analytics']['artifact_id']).to eq 'analytics-plugin'
84
+ expect(plugin_identifiers['analytics']['packaging']).to eq 'jar'
85
+ expect(plugin_identifiers['analytics']['version']).to eq '0.7.1'
86
+ expect(plugin_identifiers['analytics']['language']).to eq 'java'
86
87
 
87
- File.file?(plugins_dir + '/plugins/java/analytics-plugin/0.7.1/tmp/disabled.txt').should be_false
88
+ expect(File.file?(plugins_dir + '/plugins/java/analytics-plugin/0.7.1/tmp/disabled.txt')).to be_falsey
88
89
  end
89
90
 
90
91
  def check_uninstallation(plugins_dir)
@@ -92,28 +93,28 @@ describe KPM::BaseInstaller do
92
93
 
93
94
  plugin_identifiers = read_plugin_identifiers(plugins_dir)
94
95
 
95
- plugin_identifiers.size.should == 0
96
+ expect(plugin_identifiers.size).to eq 0
96
97
 
97
- File.file?(plugins_dir + '/plugins/java/analytics-plugin/0.7.1/tmp/disabled.txt').should be_true
98
+ expect(File.file?(plugins_dir + '/plugins/java/analytics-plugin/0.7.1/tmp/disabled.txt')).to be_truthy
98
99
  end
99
100
 
100
101
  def common_checks(plugins_dir)
101
102
  [
102
- plugins_dir,
103
- plugins_dir + '/plugins',
104
- plugins_dir + '/plugins/java',
105
- plugins_dir + '/plugins/java/analytics-plugin',
106
- plugins_dir + '/plugins/java/analytics-plugin/0.7.1',
107
- plugins_dir + '/plugins/java/analytics-plugin/0.7.1/tmp',
103
+ plugins_dir,
104
+ plugins_dir + '/plugins',
105
+ plugins_dir + '/plugins/java',
106
+ plugins_dir + '/plugins/java/analytics-plugin',
107
+ plugins_dir + '/plugins/java/analytics-plugin/0.7.1',
108
+ plugins_dir + '/plugins/java/analytics-plugin/0.7.1/tmp'
108
109
  ].each do |dir|
109
- File.directory?(dir).should be_true
110
+ expect(File.directory?(dir)).to be_truthy
110
111
  end
111
112
 
112
113
  [
113
- plugins_dir + '/plugins/plugin_identifiers.json',
114
- plugins_dir + '/plugins/java/analytics-plugin/0.7.1/analytics-plugin-0.7.1.jar'
114
+ plugins_dir + '/plugins/plugin_identifiers.json',
115
+ plugins_dir + '/plugins/java/analytics-plugin/0.7.1/analytics-plugin-0.7.1.jar'
115
116
  ].each do |file|
116
- File.file?(file).should be_true
117
+ expect(File.file?(file)).to be_truthy
117
118
  end
118
119
  end
119
120
 
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'rexml/document'
5
+
6
+ describe KPM::NexusFacade, skip_me_if_nil: ENV['TOKEN'].nil? do
7
+ let(:logger) do
8
+ logger = ::Logger.new(STDOUT)
9
+ logger.level = Logger::INFO
10
+ logger
11
+ end
12
+ let(:coordinates_map) do
13
+ { version: '1.1.9',
14
+ group_id: 'org.kill-bill.billing.thirdparty',
15
+ artifact_id: 'qualpay-java-client',
16
+ packaging: 'pom',
17
+ classifier: nil }
18
+ end
19
+ let(:coordinates) { KPM::Coordinates.build_coordinates(coordinates_map) }
20
+ let(:nexus_remote) { described_class::GithubApiCalls.new({ :url => 'https://maven.pkg.github.com/killbill/qualpay-java-client', :token => ENV['TOKEN'] }, true, logger) }
21
+
22
+ it {
23
+ # Not implemented
24
+ expect { nexus_remote.search_for_artifacts(coordinates) }.to raise_exception(NoMethodError, 'GitHub Packages has no search support')
25
+ }
26
+
27
+ it {
28
+ response = nil
29
+ expect { response = nexus_remote.get_artifact_info(coordinates) }.not_to raise_exception
30
+ expect(REXML::Document.new(response).elements['//version'].text).to eq(coordinates_map[:version])
31
+ }
32
+
33
+ it {
34
+ response = nil
35
+ destination = Dir.mktmpdir('artifact')
36
+ expect { response = nexus_remote.pull_artifact(coordinates, destination) }.not_to raise_exception
37
+ destination = File.join(File.expand_path(destination), response[:file_name])
38
+ expect(File.read(destination)).to match(/qualpay-java-client/)
39
+ }
40
+ end
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'json'
3
5
 
4
6
  describe KPM::Installer do
5
-
6
7
  before(:all) do
7
8
  @logger = Logger.new(STDOUT)
8
9
  @logger.level = Logger::INFO
@@ -12,18 +13,18 @@ describe KPM::Installer do
12
13
  Dir.mktmpdir do |dir|
13
14
  kb_webapp_path = dir + '/KB_ROOT.war'
14
15
  installer = KPM::Installer.new({
15
- 'killbill' => {
16
- 'webapp_path' => kb_webapp_path
17
- }
16
+ 'killbill' => {
17
+ 'webapp_path' => kb_webapp_path
18
+ }
18
19
  },
19
20
  @logger)
20
21
 
21
22
  # No exception
22
23
  response = nil
23
- expect{ response = installer.install }.to_not raise_exception
24
+ expect { response = installer.install }.to_not raise_exception
24
25
  response = JSON[response]
25
- response['help'].should be_nil
26
- response['killbill']['status'].should eq 'INSTALLED'
26
+ expect(response['help']).to be_nil
27
+ expect(response['killbill']['status']).to eq 'INSTALLED'
27
28
  end
28
29
  end
29
30
 
@@ -31,18 +32,18 @@ describe KPM::Installer do
31
32
  Dir.mktmpdir do |dir|
32
33
  kaui_webapp_path = dir + '/KAUI_ROOT.war'
33
34
  installer = KPM::Installer.new({
34
- 'kaui' => {
35
- 'webapp_path' => kaui_webapp_path
36
- }
35
+ 'kaui' => {
36
+ 'webapp_path' => kaui_webapp_path
37
+ }
37
38
  },
38
39
  @logger)
39
40
 
40
41
  # No exception
41
42
  response = nil
42
- expect{ response = installer.install }.to_not raise_exception
43
+ expect { response = installer.install }.to_not raise_exception
43
44
  response = JSON[response]
44
- response['help'].should be_nil
45
- response['kaui']['status'].should eq 'INSTALLED'
45
+ expect(response['help']).to be_nil
46
+ expect(response['kaui']['status']).to eq 'INSTALLED'
46
47
  end
47
48
  end
48
49
 
@@ -52,28 +53,28 @@ describe KPM::Installer do
52
53
  kaui_webapp_path = dir + '/KAUI_ROOT.war'
53
54
  plugins_dir = dir + '/bundles'
54
55
  installer = KPM::Installer.new({
55
- 'killbill' => {
56
- 'webapp_path' => kb_webapp_path,
57
- 'plugins_dir' => plugins_dir,
58
- 'plugins' => {
59
- 'java' => [{
60
- 'name' => 'analytics',
61
- 'version' => '0.7.1'
62
- }],
63
- 'ruby' => [{
64
- 'name' => 'payment-test-plugin',
65
- 'artifact_id' => 'payment-test-plugin',
66
- 'group_id' => 'org.kill-bill.billing.plugin.ruby',
67
- 'version' => '1.8.7'
68
- },
69
- {
70
- 'name' => 'stripe'
71
- }]
72
- }
73
- },
74
- 'kaui' => {
75
- 'webapp_path' => kaui_webapp_path
56
+ 'killbill' => {
57
+ 'webapp_path' => kb_webapp_path,
58
+ 'plugins_dir' => plugins_dir,
59
+ 'plugins' => {
60
+ 'java' => [{
61
+ 'name' => 'analytics',
62
+ 'version' => '0.7.1'
63
+ }, {
64
+ 'name' => 'stripe',
65
+ 'version' => '7.0.0'
66
+ }],
67
+ 'ruby' => [{
68
+ 'name' => 'payment-test-plugin',
69
+ 'artifact_id' => 'payment-test-plugin',
70
+ 'group_id' => 'org.kill-bill.billing.plugin.ruby',
71
+ 'version' => '1.8.7'
72
+ }]
76
73
  }
74
+ },
75
+ 'kaui' => {
76
+ 'webapp_path' => kaui_webapp_path
77
+ }
77
78
  },
78
79
  @logger)
79
80
 
@@ -86,11 +87,10 @@ describe KPM::Installer do
86
87
 
87
88
  # Finally verify that for both (well behaved) ruby and java plugin, skipping the install will still correctly return the `:bundle_dir`
88
89
  info = installer.install_plugin('payment-test-plugin', nil, 'org.kill-bill.billing.plugin.ruby', 'payment-test-plugin', nil, nil, '1.8.7', plugins_dir)
89
- info[:bundle_dir].should == plugins_dir + '/plugins/ruby/killbill-payment-test/1.8.7'
90
-
90
+ expect(info[:bundle_dir]).to eq plugins_dir + '/plugins/ruby/killbill-payment-test/1.8.7'
91
91
 
92
- info = installer.install_plugin('analytics', nil, nil, nil, nil, nil, '0.7.1', plugins_dir)
93
- info[:bundle_dir].should == plugins_dir + '/plugins/java/analytics-plugin/0.7.1'
92
+ info = installer.install_plugin('analytics', nil, nil, nil, nil, nil, '0.7.1', plugins_dir)
93
+ expect(info[:bundle_dir]).to eq plugins_dir + '/plugins/java/analytics-plugin/0.7.1'
94
94
  end
95
95
  end
96
96
 
@@ -98,56 +98,58 @@ describe KPM::Installer do
98
98
 
99
99
  def check_installation(plugins_dir, kb_webapp_path, kaui_webapp_path)
100
100
  [
101
- plugins_dir,
102
- plugins_dir + '/platform',
103
- plugins_dir + '/plugins',
104
- plugins_dir + '/plugins/java',
105
- plugins_dir + '/plugins/java/analytics-plugin',
106
- plugins_dir + '/plugins/java/analytics-plugin/0.7.1',
107
- plugins_dir + '/plugins/ruby',
108
- plugins_dir + '/plugins/ruby/killbill-payment-test',
109
- plugins_dir + '/plugins/ruby/killbill-payment-test/1.8.7',
110
- plugins_dir + '/plugins/ruby/killbill-stripe'
101
+ plugins_dir,
102
+ plugins_dir + '/platform',
103
+ plugins_dir + '/plugins',
104
+ plugins_dir + '/plugins/java',
105
+ plugins_dir + '/plugins/java/analytics-plugin',
106
+ plugins_dir + '/plugins/java/analytics-plugin/0.7.1',
107
+ plugins_dir + '/plugins/java/stripe-plugin',
108
+ plugins_dir + '/plugins/java/stripe-plugin/7.0.0',
109
+ plugins_dir + '/plugins/ruby',
110
+ plugins_dir + '/plugins/ruby/killbill-payment-test',
111
+ plugins_dir + '/plugins/ruby/killbill-payment-test/1.8.7'
111
112
  ].each do |dir|
112
- File.directory?(dir).should be_true
113
+ expect(File.directory?(dir)).to be_truthy
113
114
  end
114
115
 
115
116
  [
116
- kb_webapp_path,
117
- kaui_webapp_path,
118
- plugins_dir + '/platform/jruby.jar',
119
- plugins_dir + '/plugins/plugin_identifiers.json',
120
- plugins_dir + '/plugins/java/analytics-plugin/0.7.1/analytics-plugin-0.7.1.jar',
121
- plugins_dir + '/plugins/ruby/killbill-payment-test/1.8.7/killbill.properties'
117
+ kb_webapp_path,
118
+ kaui_webapp_path,
119
+ plugins_dir + '/platform/jruby.jar',
120
+ plugins_dir + '/plugins/plugin_identifiers.json',
121
+ plugins_dir + '/plugins/java/analytics-plugin/0.7.1/analytics-plugin-0.7.1.jar',
122
+ plugins_dir + '/plugins/java/stripe-plugin/7.0.0/stripe-plugin-7.0.0.jar',
123
+ plugins_dir + '/plugins/ruby/killbill-payment-test/1.8.7/killbill.properties'
122
124
  ].each do |file|
123
- File.file?(file).should be_true
125
+ expect(File.file?(file)).to be_truthy
124
126
  end
125
127
 
126
128
  plugin_identifiers = File.open(plugins_dir + '/plugins/plugin_identifiers.json', 'r') do |f|
127
129
  JSON.parse(f.read)
128
130
  end
129
131
 
130
- plugin_identifiers.size.should == 3
131
-
132
- plugin_identifiers['analytics']['plugin_name'].should == 'analytics-plugin'
133
- plugin_identifiers['analytics']['group_id'].should == 'org.kill-bill.billing.plugin.java'
134
- plugin_identifiers['analytics']['artifact_id'].should == 'analytics-plugin'
135
- plugin_identifiers['analytics']['packaging'].should == 'jar'
136
- plugin_identifiers['analytics']['version'].should == '0.7.1'
137
- plugin_identifiers['analytics']['language'].should == 'java'
138
-
139
- plugin_identifiers['payment-test-plugin']['plugin_name'].should == 'killbill-payment-test'
140
- plugin_identifiers['payment-test-plugin']['group_id'].should == 'org.kill-bill.billing.plugin.ruby'
141
- plugin_identifiers['payment-test-plugin']['artifact_id'].should == 'payment-test-plugin'
142
- plugin_identifiers['payment-test-plugin']['packaging'].should == 'tar.gz'
143
- plugin_identifiers['payment-test-plugin']['version'].should == '1.8.7'
144
- plugin_identifiers['payment-test-plugin']['language'].should == 'ruby'
145
-
146
- plugin_identifiers['stripe']['plugin_name'].should == 'killbill-stripe'
147
- plugin_identifiers['stripe']['group_id'].should == 'org.kill-bill.billing.plugin.ruby'
148
- plugin_identifiers['stripe']['artifact_id'].should == 'stripe-plugin'
149
- plugin_identifiers['stripe']['packaging'].should == 'tar.gz'
150
- plugin_identifiers['stripe']['version'].should >= '4.0.0'
151
- plugin_identifiers['stripe']['language'].should == 'ruby'
132
+ expect(plugin_identifiers.size).to eq 3
133
+
134
+ expect(plugin_identifiers['analytics']['plugin_name']).to eq 'analytics-plugin'
135
+ expect(plugin_identifiers['analytics']['group_id']).to eq 'org.kill-bill.billing.plugin.java'
136
+ expect(plugin_identifiers['analytics']['artifact_id']).to eq 'analytics-plugin'
137
+ expect(plugin_identifiers['analytics']['packaging']).to eq 'jar'
138
+ expect(plugin_identifiers['analytics']['version']).to eq '0.7.1'
139
+ expect(plugin_identifiers['analytics']['language']).to eq 'java'
140
+
141
+ expect(plugin_identifiers['stripe']['plugin_name']).to eq 'stripe-plugin'
142
+ expect(plugin_identifiers['stripe']['group_id']).to eq 'org.kill-bill.billing.plugin.java'
143
+ expect(plugin_identifiers['stripe']['artifact_id']).to eq 'stripe-plugin'
144
+ expect(plugin_identifiers['stripe']['packaging']).to eq 'jar'
145
+ expect(plugin_identifiers['stripe']['version']).to eq '7.0.0'
146
+ expect(plugin_identifiers['stripe']['language']).to eq 'java'
147
+
148
+ expect(plugin_identifiers['payment-test-plugin']['plugin_name']).to eq 'killbill-payment-test'
149
+ expect(plugin_identifiers['payment-test-plugin']['group_id']).to eq 'org.kill-bill.billing.plugin.ruby'
150
+ expect(plugin_identifiers['payment-test-plugin']['artifact_id']).to eq 'payment-test-plugin'
151
+ expect(plugin_identifiers['payment-test-plugin']['packaging']).to eq 'tar.gz'
152
+ expect(plugin_identifiers['payment-test-plugin']['version']).to eq '1.8.7'
153
+ expect(plugin_identifiers['payment-test-plugin']['language']).to eq 'ruby'
152
154
  end
153
155
  end