kpm 0.7.2 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +66 -0
  3. data/Gemfile +2 -0
  4. data/README.adoc +111 -109
  5. data/Rakefile +2 -1
  6. data/bin/kpm +4 -2
  7. data/kpm.gemspec +8 -6
  8. data/lib/kpm.rb +3 -0
  9. data/lib/kpm/account.rb +267 -338
  10. data/lib/kpm/base_artifact.rb +33 -39
  11. data/lib/kpm/base_installer.rb +69 -83
  12. data/lib/kpm/blob.rb +29 -0
  13. data/lib/kpm/cli.rb +3 -1
  14. data/lib/kpm/coordinates.rb +6 -9
  15. data/lib/kpm/database.rb +90 -114
  16. data/lib/kpm/diagnostic_file.rb +126 -147
  17. data/lib/kpm/formatter.rb +74 -46
  18. data/lib/kpm/inspector.rb +22 -32
  19. data/lib/kpm/installer.rb +53 -46
  20. data/lib/kpm/kaui_artifact.rb +4 -3
  21. data/lib/kpm/killbill_plugin_artifact.rb +10 -7
  22. data/lib/kpm/killbill_server_artifact.rb +13 -12
  23. data/lib/kpm/migrations.rb +8 -7
  24. data/lib/kpm/nexus_helper/actions.rb +47 -8
  25. data/lib/kpm/nexus_helper/nexus_api_calls_v2.rb +87 -94
  26. data/lib/kpm/nexus_helper/nexus_facade.rb +5 -3
  27. data/lib/kpm/plugins_directory.rb +9 -8
  28. data/lib/kpm/plugins_directory.yml +8 -175
  29. data/lib/kpm/plugins_manager.rb +29 -24
  30. data/lib/kpm/sha1_checker.rb +31 -18
  31. data/lib/kpm/system.rb +105 -136
  32. data/lib/kpm/system_helpers/cpu_information.rb +56 -55
  33. data/lib/kpm/system_helpers/disk_space_information.rb +60 -63
  34. data/lib/kpm/system_helpers/entropy_available.rb +37 -39
  35. data/lib/kpm/system_helpers/memory_information.rb +52 -51
  36. data/lib/kpm/system_helpers/os_information.rb +45 -47
  37. data/lib/kpm/system_helpers/system_proxy.rb +10 -10
  38. data/lib/kpm/tasks.rb +364 -437
  39. data/lib/kpm/tenant_config.rb +68 -83
  40. data/lib/kpm/tomcat_manager.rb +9 -8
  41. data/lib/kpm/trace_logger.rb +18 -16
  42. data/lib/kpm/uninstaller.rb +81 -14
  43. data/lib/kpm/utils.rb +13 -14
  44. data/lib/kpm/version.rb +3 -1
  45. data/packaging/Gemfile +2 -0
  46. data/pom.xml +1 -1
  47. data/spec/kpm/remote/base_artifact_spec.rb +13 -15
  48. data/spec/kpm/remote/base_installer_spec.rb +30 -29
  49. data/spec/kpm/remote/installer_spec.rb +73 -73
  50. data/spec/kpm/remote/kaui_artifact_spec.rb +7 -6
  51. data/spec/kpm/remote/killbill_plugin_artifact_spec.rb +19 -24
  52. data/spec/kpm/remote/killbill_server_artifact_spec.rb +17 -16
  53. data/spec/kpm/remote/migrations_spec.rb +12 -11
  54. data/spec/kpm/remote/nexus_facade_spec.rb +30 -26
  55. data/spec/kpm/remote/tenant_config_spec.rb +27 -26
  56. data/spec/kpm/remote/tomcat_manager_spec.rb +2 -1
  57. data/spec/kpm/unit/actions_spec.rb +52 -0
  58. data/spec/kpm/unit/base_artifact_spec.rb +17 -16
  59. data/spec/kpm/unit/cpu_information_spec.rb +67 -0
  60. data/spec/kpm/unit/disk_space_information_spec.rb +47 -0
  61. data/spec/kpm/unit/entropy_information_spec.rb +36 -0
  62. data/spec/kpm/unit/formatter_spec.rb +163 -0
  63. data/spec/kpm/unit/inspector_spec.rb +34 -42
  64. data/spec/kpm/unit/installer_spec.rb +5 -4
  65. data/spec/kpm/unit/memory_information_spec.rb +102 -0
  66. data/spec/kpm/unit/os_information_spec.rb +38 -0
  67. data/spec/kpm/unit/plugins_directory_spec.rb +34 -18
  68. data/spec/kpm/unit/plugins_manager_spec.rb +61 -65
  69. data/spec/kpm/unit/sha1_checker_spec.rb +107 -60
  70. data/spec/kpm/unit/uninstaller_spec.rb +107 -61
  71. data/spec/kpm/unit_mysql/account_spec.rb +120 -135
  72. data/spec/spec_helper.rb +19 -17
  73. data/tasks/package.rake +18 -18
  74. metadata +17 -8
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe KPM::KillbillPluginArtifact do
4
-
5
6
  before(:all) do
6
7
  @logger = Logger.new(STDOUT)
7
8
  @logger.level = Logger::INFO
@@ -16,15 +17,15 @@ describe KPM::KillbillPluginArtifact do
16
17
  KPM::BaseArtifact::KAUI_CLASSIFIER,
17
18
  'LATEST',
18
19
  dir)
19
- info[:file_name].should == "kaui-standalone-#{info[:version]}.war"
20
- info[:size].should == File.size(info[:file_path])
20
+ info[:file_name].should eq "kaui-standalone-#{info[:version]}.war"
21
+ info[:size].should eq File.size(info[:file_path])
21
22
  end
22
23
  end
23
24
 
24
25
  it 'should be able to list versions' do
25
26
  versions = KPM::KauiArtifact.versions.to_a
26
- versions.size.should >= 2
27
- versions[0].should == '0.0.1'
28
- versions[1].should == '0.0.2'
27
+ expect(versions.size).to be >= 2
28
+ versions[0].should eq '0.0.1'
29
+ versions[1].should eq '0.0.2'
29
30
  end
30
31
  end
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe KPM::KillbillPluginArtifact do
4
-
5
6
  before(:all) do
6
7
  @logger = Logger.new(STDOUT)
7
8
  @logger.level = Logger::INFO
@@ -22,12 +23,12 @@ describe KPM::KillbillPluginArtifact do
22
23
  info[:file_name].should be_nil
23
24
 
24
25
  files_in_dir = Dir[info[:file_path] + '/*']
25
- files_in_dir.size.should == 1
26
- files_in_dir[0].should == info[:file_path] + '/killbill-payment-test'
26
+ files_in_dir.size.should eq 1
27
+ files_in_dir[0].should eq info[:file_path] + '/killbill-payment-test'
27
28
 
28
- File.read(info[:file_path] + '/killbill-payment-test/1.8.7/killbill.properties').should == "mainClass=PaymentTest::PaymentPlugin\nrequire=payment_test\npluginType=PAYMENT\n"
29
+ File.read(info[:file_path] + '/killbill-payment-test/1.8.7/killbill.properties').should eq "mainClass=PaymentTest::PaymentPlugin\nrequire=payment_test\npluginType=PAYMENT\n"
29
30
 
30
- info[:bundle_dir].should == info[:file_path] + '/killbill-payment-test/1.8.7'
31
+ info[:bundle_dir].should eq info[:file_path] + '/killbill-payment-test/1.8.7'
31
32
  end
32
33
  end
33
34
 
@@ -43,8 +44,8 @@ describe KPM::KillbillPluginArtifact do
43
44
  'killbill-analytics',
44
45
  dir,
45
46
  sha1_file)
46
- info[:file_name].should == "analytics-plugin-#{info[:version]}.jar"
47
- info[:size].should == File.size(info[:file_path])
47
+ info[:file_name].should eq "analytics-plugin-#{info[:version]}.jar"
48
+ info[:size].should eq File.size(info[:file_path])
48
49
 
49
50
  check_yaml_for_resolved_latest_version(sha1_file, 'org.kill-bill.billing.plugin.java:analytics-plugin:jar', '3.0.0')
50
51
  end
@@ -66,9 +67,6 @@ describe KPM::KillbillPluginArtifact do
66
67
 
67
68
  check_yaml_for_resolved_latest_version(sha1_file, 'org.kill-bill.billing.plugin.ruby:logging-plugin:tar.gz', '3.0.0')
68
69
  end
69
-
70
-
71
-
72
70
  end
73
71
 
74
72
  it 'should be able to list versions' do
@@ -77,16 +75,16 @@ describe KPM::KillbillPluginArtifact do
77
75
  versions[:java].should_not be_nil
78
76
  versions[:java]['analytics-plugin'].should_not be_nil
79
77
  logging_plugin_versions = versions[:java]['analytics-plugin'].to_a
80
- logging_plugin_versions.size.should >= 3
81
- logging_plugin_versions[0].should == '0.6.0'
82
- logging_plugin_versions[1].should == '0.7.0'
83
- logging_plugin_versions[2].should == '0.7.1'
78
+ expect(logging_plugin_versions.size).to be >= 3
79
+ logging_plugin_versions[0].should eq '0.6.0'
80
+ logging_plugin_versions[1].should eq '0.7.0'
81
+ logging_plugin_versions[2].should eq '0.7.1'
84
82
 
85
83
  versions[:ruby].should_not be_nil
86
84
  versions[:ruby]['logging-plugin'].should_not be_nil
87
85
  logging_plugin_versions = versions[:ruby]['logging-plugin'].to_a
88
- logging_plugin_versions.size.should >= 1
89
- logging_plugin_versions[0].should == '1.7.0'
86
+ expect(logging_plugin_versions.size).to be >= 1
87
+ logging_plugin_versions[0].should eq '1.7.0'
90
88
  end
91
89
 
92
90
  private
@@ -95,17 +93,14 @@ describe KPM::KillbillPluginArtifact do
95
93
  # (we can't check against actual version because as we keep releasing those increment,
96
94
  # so the best we can do it check this is *not* LATEST and greater than current version at the time the test was written )
97
95
  def check_yaml_for_resolved_latest_version(sha1_file, key_prefix, minimum_version)
98
-
99
96
  sha1_checker = KPM::Sha1Checker.from_file(sha1_file)
100
97
 
101
- keys = sha1_checker.all_sha1.keys.select { |k| k.start_with? key_prefix}
102
- keys.size.should == 1
98
+ keys = sha1_checker.all_sha1.keys.select { |k| k.start_with? key_prefix }
99
+ keys.size.should eq 1
103
100
 
104
101
  parts = keys[0].split(':')
105
- parts.size.should == 4
106
- parts[3].should_not == 'LATEST'
107
- parts[3].should >= minimum_version
102
+ parts.size.should eq 4
103
+ parts[3].should_not eq 'LATEST'
104
+ expect(parts[3]).to be >= minimum_version
108
105
  end
109
-
110
-
111
106
  end
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe KPM::KillbillServerArtifact do
4
-
5
6
  before(:all) do
6
7
  @logger = Logger.new(STDOUT)
7
8
  @logger.level = Logger::INFO
@@ -17,41 +18,41 @@ describe KPM::KillbillServerArtifact do
17
18
  KPM::BaseArtifact::KILLBILL_CLASSIFIER,
18
19
  'LATEST',
19
20
  dir)
20
- info[:file_name].should == "killbill-profiles-killbill-#{info[:version]}.war"
21
- info[:size].should == File.size(info[:file_path])
21
+ info[:file_name].should eq "killbill-profiles-killbill-#{info[:version]}.war"
22
+ info[:size].should eq File.size(info[:file_path])
22
23
  end
23
24
  end
24
25
 
25
26
  it 'should be able to list versions' do
26
27
  versions = KPM::KillbillServerArtifact.versions(KPM::BaseArtifact::KILLBILL_ARTIFACT_ID).to_a
27
- versions.size.should >= 2
28
- versions[0].should == '0.11.10'
29
- versions[1].should == '0.11.11'
28
+ expect(versions.size).to be >= 2
29
+ versions[0].should eq '0.11.10'
30
+ versions[1].should eq '0.11.11'
30
31
  end
31
32
 
32
33
  it 'should get dependencies information' do
33
- nexus_down = {:url => 'https://does.not.exist'}
34
+ nexus_down = { url: 'https://does.not.exist' }
34
35
 
35
36
  Dir.mktmpdir do |dir|
36
37
  sha1_file = "#{dir}/sha1.yml"
37
38
  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
39
+ info['killbill'].should eq '0.15.9'
40
+ info['killbill-oss-parent'].should eq '0.62'
41
+ info['killbill-api'].should eq '0.27'
42
+ info['killbill-plugin-api'].should eq '0.16'
43
+ info['killbill-commons'].should eq '0.10'
44
+ info['killbill-platform'].should eq '0.13'
45
+ KPM::Sha1Checker.from_file(sha1_file).killbill_info('0.15.9').should eq info
45
46
 
46
47
  # Verify the download is skipped gracefully when Nexus isn't reachable
47
48
  KPM::KillbillServerArtifact.info('0.15.9', sha1_file, false, nil, nexus_down)
48
49
 
49
50
  # 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
+ expect { KPM::KillbillServerArtifact.info('0.15.9', sha1_file, true, nil, nexus_down) }.to raise_error
51
52
 
52
53
  # Verify the download fails when Nexus isn't reachable and the Nexus cache is empty
53
54
  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
+ expect { KPM::KillbillServerArtifact.info('0.15.9', sha1_file, false, nil, nexus_down) }.to raise_error
55
56
  end
56
57
  end
57
58
  end
@@ -1,18 +1,19 @@
1
- require 'spec_helper'
1
+ # frozen_string_literal: true
2
2
 
3
- describe KPM::Migrations, :skip_me_if_nil => ENV['TOKEN'].nil? do
3
+ require 'spec_helper'
4
4
 
5
+ describe KPM::Migrations, skip_me_if_nil: ENV['TOKEN'].nil? do
5
6
  context 'plugins' do
6
7
  it 'should be able to find migrations for a java plugin' do
7
8
  migrations = KPM::Migrations.new('analytics-plugin-3.0.2', nil, 'killbill/killbill-analytics-plugin', ENV['TOKEN']).migrations
8
9
  # No migration yet
9
- migrations.size.should == 0
10
+ migrations.size.should eq 0
10
11
  end
11
12
 
12
13
  it 'should be able to find migrations for a ruby plugin' do
13
14
  migrations = KPM::Migrations.new('master', nil, 'killbill/killbill-cybersource-plugin', ENV['TOKEN']).migrations
14
15
  # No migration yet
15
- migrations.size.should == 1
16
+ migrations.size.should eq 1
16
17
  end
17
18
  end
18
19
 
@@ -20,19 +21,19 @@ describe KPM::Migrations, :skip_me_if_nil => ENV['TOKEN'].nil? do
20
21
  it 'should be able to find migrations between two versions' do
21
22
  migrations = KPM::Migrations.new('killbill-0.16.3', 'killbill-0.16.4', 'killbill/killbill', ENV['TOKEN']).migrations
22
23
 
23
- migrations.size.should == 1
24
- migrations.first[:name].should == 'V20160324060345__revisit_payment_methods_indexes_509.sql'
25
- migrations.first[:sql].should == "drop index payment_methods_active_accnt on payment_methods;\n"
24
+ migrations.size.should eq 1
25
+ migrations.first[:name].should eq 'V20160324060345__revisit_payment_methods_indexes_509.sql'
26
+ migrations.first[:sql].should eq "drop index payment_methods_active_accnt on payment_methods;\n"
26
27
 
27
- KPM::Migrations.new('master', 'master', 'killbill/killbill', ENV['TOKEN']).migrations.size.should == 0
28
+ KPM::Migrations.new('master', 'master', 'killbill/killbill', ENV['TOKEN']).migrations.size.should eq 0
28
29
  end
29
30
 
30
31
  it 'should be able to find migrations for a given version' do
31
32
  migrations = KPM::Migrations.new('killbill-0.16.4', nil, 'killbill/killbill', ENV['TOKEN']).migrations
32
33
 
33
- migrations.size.should == 1
34
- migrations.first[:name].should == 'V20160324060345__revisit_payment_methods_indexes_509.sql'
35
- migrations.first[:sql].should == "drop index payment_methods_active_accnt on payment_methods;\n"
34
+ migrations.size.should eq 1
35
+ migrations.first[:name].should eq 'V20160324060345__revisit_payment_methods_indexes_509.sql'
36
+ migrations.first[:sql].should eq "drop index payment_methods_active_accnt on payment_methods;\n"
36
37
  end
37
38
  end
38
39
  end
@@ -1,50 +1,55 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'rexml/document'
3
5
 
4
6
  describe KPM::NexusFacade do
5
-
6
- let(:coordinates_map){ {:version => '0.1.4',
7
- :group_id => 'org.kill-bill.billing',
8
- :artifact_id => 'killbill-platform-osgi-api',
9
- :packaging => 'jar',
10
- :classifier => nil} }
11
- let(:coordinates_with_classifier_map){ {:version => '0.1.1',
12
- :group_id => 'org.kill-bill.billing',
13
- :artifact_id => 'killbill-platform-osgi-bundles-jruby',
14
- :packaging => 'jar',
15
- :classifier => 'javadoc'} }
16
- let(:coordinates) { KPM::Coordinates.build_coordinates(coordinates_map)}
17
- let(:coordinates_with_classifier) { KPM::Coordinates.build_coordinates(coordinates_with_classifier_map)}
18
- let(:nexus_remote) { described_class::RemoteFactory.create(nil, true)}
7
+ let(:coordinates_map) do
8
+ { version: '0.1.4',
9
+ group_id: 'org.kill-bill.billing',
10
+ artifact_id: 'killbill-platform-osgi-api',
11
+ packaging: 'jar',
12
+ classifier: nil }
13
+ end
14
+ let(:coordinates_with_classifier_map) do
15
+ { version: '0.1.1',
16
+ group_id: 'org.kill-bill.billing',
17
+ artifact_id: 'killbill-platform-osgi-bundles-jruby',
18
+ packaging: 'jar',
19
+ classifier: 'javadoc' }
20
+ end
21
+ let(:coordinates) { KPM::Coordinates.build_coordinates(coordinates_map) }
22
+ let(:coordinates_with_classifier) { KPM::Coordinates.build_coordinates(coordinates_with_classifier_map) }
23
+ let(:nexus_remote) { described_class::RemoteFactory.create(nil, true) }
19
24
 
20
25
  it 'when searching for artifacts' do
21
26
  response = nil
22
- expect{ response = nexus_remote.search_for_artifacts(coordinates) }.not_to raise_exception
23
- expect(REXML::Document.new(response).elements["//artifactId"].text).to eq(coordinates_map[:artifact_id])
27
+ expect { response = nexus_remote.search_for_artifacts(coordinates) }.not_to raise_exception
28
+ expect(REXML::Document.new(response).elements['//artifactId'].text).to eq(coordinates_map[:artifact_id])
24
29
  end
25
30
 
26
31
  it 'when searching for artifact with classifier' do
27
32
  response = nil
28
- expect{ response = nexus_remote.search_for_artifacts(coordinates_with_classifier) }.not_to raise_exception
29
- expect(REXML::Document.new(response).elements["//artifactId"].text).to eq(coordinates_with_classifier_map[:artifact_id])
33
+ expect { response = nexus_remote.search_for_artifacts(coordinates_with_classifier) }.not_to raise_exception
34
+ expect(REXML::Document.new(response).elements['//artifactId'].text).to eq(coordinates_with_classifier_map[:artifact_id])
30
35
  end
31
36
 
32
37
  it 'when getting artifact info' do
33
38
  response = nil
34
- expect{ response = nexus_remote.get_artifact_info(coordinates) }.not_to raise_exception
35
- expect(REXML::Document.new(response).elements["//version"].text).to eq(coordinates_map[:version])
39
+ expect { response = nexus_remote.get_artifact_info(coordinates) }.not_to raise_exception
40
+ expect(REXML::Document.new(response).elements['//version'].text).to eq(coordinates_map[:version])
36
41
  end
37
42
 
38
43
  it 'when getting artifact info with classifier' do
39
44
  response = nil
40
- expect{ response = nexus_remote.get_artifact_info(coordinates_with_classifier) }.not_to raise_exception
41
- expect(REXML::Document.new(response).elements["//version"].text).to eq(coordinates_with_classifier_map[:version])
45
+ expect { response = nexus_remote.get_artifact_info(coordinates_with_classifier) }.not_to raise_exception
46
+ expect(REXML::Document.new(response).elements['//version'].text).to eq(coordinates_with_classifier_map[:version])
42
47
  end
43
48
 
44
49
  it 'when pull artifact' do
45
50
  response = nil
46
51
  destination = Dir.mktmpdir('artifact')
47
- expect{ response = nexus_remote.pull_artifact(coordinates,destination) }.not_to raise_exception
52
+ expect { response = nexus_remote.pull_artifact(coordinates, destination) }.not_to raise_exception
48
53
  destination = File.join(File.expand_path(destination), response[:file_name])
49
54
  expect(File.exist?(destination)).to be_true
50
55
  end
@@ -52,9 +57,8 @@ describe KPM::NexusFacade do
52
57
  it 'when pull artifact with classifier' do
53
58
  response = nil
54
59
  destination = Dir.mktmpdir('artifact')
55
- expect{ response = nexus_remote.pull_artifact(coordinates_with_classifier,destination) }.not_to raise_exception
60
+ expect { response = nexus_remote.pull_artifact(coordinates_with_classifier, destination) }.not_to raise_exception
56
61
  destination = File.join(File.expand_path(destination), response[:file_name])
57
62
  expect(File.exist?(destination)).to be_true
58
63
  end
59
-
60
- end
64
+ end
@@ -1,24 +1,29 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe KPM::TenantConfig do
4
6
  include_context 'connection_setup'
5
7
 
6
- let(:value) {"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<catalog>\n <effectiveDate>2017-04-25T15:57:43Z</effectiveDate>\n <catalogName>DEFAULT</catalogName>\n <recurringBillingMode>IN_ADVANCE</recurringBillingMode>\n <currencies/>\n <units/>\n <products/>\n <rules>\n <changePolicy>\n <changePolicyCase>\n <policy>IMMEDIATE</policy>\n </changePolicyCase>\n </changePolicy>\n <changeAlignment>\n <changeAlignmentCase>\n <alignment>START_OF_BUNDLE</alignment>\n </changeAlignmentCase>\n </changeAlignment>\n <cancelPolicy>\n <cancelPolicyCase>\n <policy>IMMEDIATE</policy>\n </cancelPolicyCase>\n </cancelPolicy>\n <createAlignment>\n <createAlignmentCase>\n <alignment>START_OF_BUNDLE</alignment>\n </createAlignmentCase>\n </createAlignment>\n <billingAlignment>\n <billingAlignmentCase>\n <alignment>ACCOUNT</alignment>\n </billingAlignmentCase>\n </billingAlignment>\n <priceList>\n <priceListCase>\n <toPriceList>DEFAULT</toPriceList>\n </priceListCase>\n </priceList>\n </rules>\n <plans/>\n <priceLists>\n <defaultPriceList name=\"DEFAULT\">\n <plans/>\n </defaultPriceList>\n </priceLists>\n</catalog>\n"}
7
- let(:key) {'CATALOG_RSPEC'}
8
-
9
- let(:user) {'KPM Tenant Spec'}
10
- let(:tenant_config_class) { described_class.new([killbill_api_key,killbill_api_secrets],
11
- [killbill_user, killbill_password],url,logger)}
12
- let(:options){{
13
- :username => killbill_user,
14
- :password => killbill_password,
15
- :api_key => killbill_api_key,
16
- :api_secret => killbill_api_secrets
17
- }}
18
-
8
+ let(:value) { "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<catalog>\n <effectiveDate>2017-04-25T15:57:43Z</effectiveDate>\n <catalogName>DEFAULT</catalogName>\n <recurringBillingMode>IN_ADVANCE</recurringBillingMode>\n <currencies/>\n <units/>\n <products/>\n <rules>\n <changePolicy>\n <changePolicyCase>\n <policy>IMMEDIATE</policy>\n </changePolicyCase>\n </changePolicy>\n <changeAlignment>\n <changeAlignmentCase>\n <alignment>START_OF_BUNDLE</alignment>\n </changeAlignmentCase>\n </changeAlignment>\n <cancelPolicy>\n <cancelPolicyCase>\n <policy>IMMEDIATE</policy>\n </cancelPolicyCase>\n </cancelPolicy>\n <createAlignment>\n <createAlignmentCase>\n <alignment>START_OF_BUNDLE</alignment>\n </createAlignmentCase>\n </createAlignment>\n <billingAlignment>\n <billingAlignmentCase>\n <alignment>ACCOUNT</alignment>\n </billingAlignmentCase>\n </billingAlignment>\n <priceList>\n <priceListCase>\n <toPriceList>DEFAULT</toPriceList>\n </priceListCase>\n </priceList>\n </rules>\n <plans/>\n <priceLists>\n <defaultPriceList name=\"DEFAULT\">\n <plans/>\n </defaultPriceList>\n </priceLists>\n</catalog>\n" }
9
+ let(:key) { 'CATALOG_RSPEC' }
10
+
11
+ let(:user) { 'KPM Tenant Spec' }
12
+ let(:tenant_config_class) do
13
+ described_class.new([killbill_api_key, killbill_api_secret],
14
+ [killbill_user, killbill_password], url, logger)
15
+ end
16
+ let(:options) do
17
+ {
18
+ username: killbill_user,
19
+ password: killbill_password,
20
+ api_key: killbill_api_key,
21
+ api_secret: killbill_api_secret
22
+ }
23
+ end
24
+
19
25
  describe '#initialize' do
20
26
  context 'when creating an instance of tenant config class' do
21
-
22
27
  it 'when initialized with defaults' do
23
28
  expect(described_class.new).to be_an_instance_of(KPM::TenantConfig)
24
29
  end
@@ -26,33 +31,29 @@ describe KPM::TenantConfig do
26
31
  it 'when initialized with options' do
27
32
  tenant_config_class.should be_an_instance_of(KPM::TenantConfig)
28
33
  expect(tenant_config_class.instance_variable_get(:@killbill_api_key)).to eq(killbill_api_key)
29
- expect(tenant_config_class.instance_variable_get(:@killbill_api_secrets)).to eq(killbill_api_secrets)
34
+ expect(tenant_config_class.instance_variable_get(:@killbill_api_secret)).to eq(killbill_api_secret)
30
35
  expect(tenant_config_class.instance_variable_get(:@killbill_user)).to eq(killbill_user)
31
36
  expect(tenant_config_class.instance_variable_get(:@killbill_password)).to eq(killbill_password)
32
37
  expect(tenant_config_class.instance_variable_get(:@killbill_url)).to eq(url)
33
-
34
38
  end
35
-
36
39
  end
40
+ end
37
41
 
38
- end
39
-
40
42
  describe '#export' do
41
43
  it 'when retrieving tenant configuration' do
42
44
  KillBillClient.url = url
43
45
 
44
- #Add a new tenant config
46
+ # Add a new tenant config
45
47
  tenant_config = KillBillClient::Model::Tenant.upload_tenant_user_key_value(key, value, user, nil, nil, options)
46
48
  expect(tenant_config.key).to eq(key)
47
-
48
- #get created tenant config
49
+
50
+ # get created tenant config
49
51
  export_file = tenant_config_class.export(key)
50
52
  expect(File.exist?(export_file)).to be_true
51
53
  expect(File.readlines(export_file).grep(/#{key}/)).to be_true
52
-
53
- #remove created tenant config
54
+
55
+ # remove created tenant config
54
56
  KillBillClient::Model::Tenant.delete_tenant_user_key_value(key, user, nil, nil, options)
55
-
56
57
  end
57
58
  end
58
- end
59
+ end
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe KPM::TomcatManager do
4
-
5
6
  before(:all) do
6
7
  @logger = Logger.new(STDOUT)
7
8
  @logger.level = Logger::INFO
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe KPM::NexusFacade::Actions do
6
+ subject { described_class.new({}, nil, logger) }
7
+ let(:logger) { Logger.new(STDOUT) }
8
+ let(:nexus_mock) { double(KPM::NexusFacade::NexusApiCallsV2) }
9
+
10
+ before do
11
+ KPM::NexusFacade::NexusApiCallsV2.stub(:new).and_return(nexus_mock)
12
+ end
13
+
14
+ context 'when Nexus throws a non-retryable exception' do
15
+ it 'never retries' do
16
+ calls = 0
17
+ expect do
18
+ subject.send(:retry_exceptions, 'foo') do
19
+ calls += 1
20
+ raise StandardError, '404'
21
+ end
22
+ end.to raise_error(StandardError)
23
+ expect(calls).to eq(1)
24
+ end
25
+ end
26
+
27
+ context 'when Nexus throws a retryable exception' do
28
+ it 'retries until giving up' do
29
+ calls = 0
30
+ expect do
31
+ subject.send(:retry_exceptions, 'foo') do
32
+ calls += 1
33
+ raise KPM::NexusFacade::UnexpectedStatusCodeException, 503
34
+ end
35
+ end.to raise_error(StandardError)
36
+ expect(calls).to eq(3)
37
+ end
38
+ end
39
+
40
+ context 'when networking is flaky' do
41
+ it 'retries until call succeeds' do
42
+ calls = 0
43
+ expect(subject.send(:retry_exceptions, 'foo') do
44
+ calls += 1
45
+ raise OpenSSL::SSL::SSLErrorWaitReadable if calls < 2
46
+
47
+ true
48
+ end).to be_true
49
+ expect(calls).to eq(2)
50
+ end
51
+ end
52
+ end