hammer_cli_foreman 2.3.0 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/doc/release_notes.md +27 -0
  3. data/lib/hammer_cli_foreman.rb +3 -0
  4. data/lib/hammer_cli_foreman/architecture.rb +5 -5
  5. data/lib/hammer_cli_foreman/bookmark.rb +6 -6
  6. data/lib/hammer_cli_foreman/command_extensions.rb +1 -0
  7. data/lib/hammer_cli_foreman/command_extensions/ping.rb +21 -2
  8. data/lib/hammer_cli_foreman/command_extensions/status.rb +1 -1
  9. data/lib/hammer_cli_foreman/command_extensions/update_common.rb +14 -0
  10. data/lib/hammer_cli_foreman/commands.rb +14 -0
  11. data/lib/hammer_cli_foreman/compute_profile.rb +5 -5
  12. data/lib/hammer_cli_foreman/compute_resource.rb +22 -0
  13. data/lib/hammer_cli_foreman/compute_resource/ovirt.rb +2 -1
  14. data/lib/hammer_cli_foreman/config_group.rb +5 -5
  15. data/lib/hammer_cli_foreman/config_report.rb +2 -0
  16. data/lib/hammer_cli_foreman/filter.rb +2 -2
  17. data/lib/hammer_cli_foreman/host.rb +1 -11
  18. data/lib/hammer_cli_foreman/hosts/common_update_options.rb +6 -5
  19. data/lib/hammer_cli_foreman/mail_notification.rb +2 -2
  20. data/lib/hammer_cli_foreman/model.rb +5 -5
  21. data/lib/hammer_cli_foreman/operating_system.rb +10 -9
  22. data/lib/hammer_cli_foreman/option_builders.rb +27 -7
  23. data/lib/hammer_cli_foreman/ping.rb +6 -1
  24. data/lib/hammer_cli_foreman/registration.rb +18 -0
  25. data/lib/hammer_cli_foreman/settings.rb +3 -3
  26. data/lib/hammer_cli_foreman/usergroup.rb +5 -5
  27. data/lib/hammer_cli_foreman/version.rb +1 -1
  28. data/locale/ca/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  29. data/locale/de/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  30. data/locale/en/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  31. data/locale/en_GB/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  32. data/locale/es/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  33. data/locale/fr/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  34. data/locale/it/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  35. data/locale/ja/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  36. data/locale/ko/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  37. data/locale/pt_BR/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  38. data/locale/ru/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  39. data/locale/zh_CN/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  40. data/locale/zh_TW/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  41. data/test/data/2.4/foreman_api.json +1 -0
  42. data/test/data/2.5/foreman_api.json +1 -0
  43. data/test/functional/architecture_test.rb +79 -0
  44. data/test/functional/bookmark_test.rb +22 -1
  45. data/test/functional/compute_profile_test.rb +54 -0
  46. data/test/functional/compute_resource_test.rb +37 -0
  47. data/test/functional/config_group_test.rb +50 -0
  48. data/test/functional/filter_test.rb +115 -47
  49. data/test/functional/host_test.rb +99 -3
  50. data/test/functional/http_proxy_test.rb +12 -0
  51. data/test/functional/location_test.rb +13 -0
  52. data/test/functional/mail_notification_test.rb +20 -0
  53. data/test/functional/media_test.rb +11 -0
  54. data/test/functional/model_test.rb +50 -0
  55. data/test/functional/operating_system_test.rb +51 -0
  56. data/test/functional/ping_test.rb +33 -0
  57. data/test/functional/realm_test.rb +11 -0
  58. data/test/functional/registration_test.rb +8 -0
  59. data/test/functional/report_template_test.rb +11 -0
  60. data/test/functional/settings_test.rb +21 -0
  61. data/test/functional/status_test.rb +79 -13
  62. data/test/functional/template_test.rb +12 -0
  63. data/test/functional/user_test.rb +11 -0
  64. data/test/functional/usergroup_test.rb +51 -0
  65. data/test/test_helper.rb +1 -1
  66. data/test/unit/apipie_resource_mock.rb +21 -0
  67. data/test/unit/architecture_test.rb +10 -1
  68. data/test/unit/bookmark_test.rb +99 -0
  69. data/test/unit/compute_profile_test.rb +87 -0
  70. data/test/unit/config_group_test.rb +10 -0
  71. data/test/unit/config_report_test.rb +1 -0
  72. data/test/unit/host_test.rb +0 -23
  73. data/test/unit/mail_notification_test.rb +53 -0
  74. data/test/unit/model_test.rb +10 -0
  75. data/test/unit/operating_system_test.rb +14 -1
  76. data/test/unit/settings_test.rb +4 -0
  77. data/test/unit/usergroup_test.rb +10 -0
  78. metadata +129 -107
  79. data/test/reports/TEST-Minitest-Result.xml +0 -4344
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ require File.join(File.dirname(__FILE__), 'test_helper')
4
+
5
+ describe 'user-group' do
6
+ describe 'list' do
7
+ before do
8
+ @cmd = %w[user-group list]
9
+ @user_groups = [{
10
+ id: 1,
11
+ name: 'test-user-group',
12
+ admin: 'yes',
13
+ }]
14
+ end
15
+
16
+ it 'should return a list of user groups' do
17
+ api_expects(:usergroups, :index, 'List user groups').returns(@user_groups)
18
+
19
+ output = IndexMatcher.new([
20
+ %w[ID NAME ADMIN],
21
+ %w[1 test-user-group yes]
22
+ ])
23
+ expected_result = success_result(output)
24
+
25
+ result = run_cmd(@cmd)
26
+ assert_cmd(expected_result, result)
27
+ end
28
+
29
+ it 'should run list command with defaults' do
30
+ providers = { 'foreman' => HammerCLIForeman::Defaults.new(api_connection({}, '2.1')) }
31
+ defaults = HammerCLI::Defaults.new(
32
+ {
33
+ organization_id: {
34
+ provider: 'foreman'
35
+ },
36
+ location_id: {
37
+ provider: 'foreman'
38
+ }
39
+ }
40
+ )
41
+ defaults.stubs(:write_to_file).returns(true)
42
+ defaults.stubs(:providers).returns(providers)
43
+ api_expects(:usergroups, :index, 'List user groups').returns(@user_groups)
44
+
45
+ result = run_cmd(@cmd, { use_defaults: true, defaults: defaults })
46
+ _(result.exit_code).must_equal HammerCLI::EX_OK
47
+ end
48
+ end
49
+ end
50
+
51
+
data/test/test_helper.rb CHANGED
@@ -17,7 +17,7 @@ require "mocha/minitest"
17
17
  require 'hammer_cli'
18
18
  require 'hammer_cli_foreman/testing/api_expectations'
19
19
 
20
- FOREMAN_VERSION = ENV['TEST_API_VERSION'] || '2.1'
20
+ FOREMAN_VERSION = ENV['TEST_API_VERSION'] || '2.5'
21
21
  unless Dir.entries('test/data').include? FOREMAN_VERSION
22
22
  raise StandardError.new "Version is not correct"
23
23
  end
@@ -237,6 +237,27 @@ module ResourceMocks
237
237
  )
238
238
  end
239
239
 
240
+ def self.bookmarks
241
+ ResourceMocks.mock_action_calls(
242
+ [:bookmarks, :index, []],
243
+ [:bookmarks, :show, {}]
244
+ )
245
+ end
246
+
247
+ def self.mail_notifications
248
+ ResourceMocks.mock_action_calls(
249
+ [:mail_notifications, :index, []],
250
+ [:mail_notifications, :show, {}]
251
+ )
252
+ end
253
+
254
+ def self.compute_profiles
255
+ ResourceMocks.mock_action_calls(
256
+ [:compute_profiles, :index, []],
257
+ [:compute_profiles, :show, {}]
258
+ )
259
+ end
260
+
240
261
  def self.parameters_index
241
262
  ResourceMocks.mock_action_call(:parameters, :index, [])
242
263
  end
@@ -17,6 +17,8 @@ describe HammerCLIForeman::Architecture do
17
17
  context "parameters" do
18
18
  it_should_accept "no arguments"
19
19
  it_should_accept_search_params
20
+ it_should_fail_with 'organization param', ['--organization-id=1']
21
+ it_should_fail_with 'location param', ['--location-id=1']
20
22
  end
21
23
 
22
24
  context "output" do
@@ -37,6 +39,8 @@ describe HammerCLIForeman::Architecture do
37
39
  context "parameters" do
38
40
  it_should_accept "id", ["--id=1"]
39
41
  it_should_accept "name", ["--name=arch"]
42
+ it_should_fail_with 'organization param', ['--organization-id=1']
43
+ it_should_fail_with 'location param', ['--location-id=1']
40
44
  # it_should_fail_with "no arguments" # TODO: temporarily disabled, parameters are checked in the id resolver
41
45
  end
42
46
 
@@ -57,6 +61,8 @@ describe HammerCLIForeman::Architecture do
57
61
 
58
62
  context "parameters" do
59
63
  it_should_accept "name", ["--name=arch"]
64
+ it_should_fail_with 'organization param', ['--organization-id=1']
65
+ it_should_fail_with 'location param', ['--location-id=1']
60
66
  # it_should_fail_with "name missing", []
61
67
  # TODO: temporarily disabled, parameters are checked in the api
62
68
  end
@@ -71,6 +77,8 @@ describe HammerCLIForeman::Architecture do
71
77
  context "parameters" do
72
78
  it_should_accept "name", ["--name=arch"]
73
79
  it_should_accept "id", ["--id=1"]
80
+ it_should_fail_with 'organization param', ['--organization-id=1']
81
+ it_should_fail_with 'location param', ['--location-id=1']
74
82
  # it_should_fail_with "name or id missing", [] # TODO: temporarily disabled, parameters are checked in the id resolver
75
83
  end
76
84
 
@@ -84,9 +92,10 @@ describe HammerCLIForeman::Architecture do
84
92
  context "parameters" do
85
93
  it_should_accept "name", ["--name=arch", "--new-name=arch2"]
86
94
  it_should_accept "id", ["--id=1", "--new-name=arch2"]
95
+ it_should_fail_with 'organization param', ['--organization-id=1']
96
+ it_should_fail_with 'location param', ['--location-id=1']
87
97
  # it_should_fail_with "no params", [] # TODO: temporarily disabled, parameters are checked in the id resolver
88
98
  # it_should_fail_with "name or id missing", ["--new-name=arch2"] # TODO: temporarily disabled, parameters are checked in the id resolver
89
99
  end
90
-
91
100
  end
92
101
  end
@@ -0,0 +1,99 @@
1
+ # frozen_string_literal: true
2
+
3
+ require File.join(File.dirname(__FILE__), 'test_helper')
4
+ require File.join(File.dirname(__FILE__), 'apipie_resource_mock')
5
+
6
+ require 'hammer_cli_foreman/bookmark'
7
+
8
+ describe HammerCLIForeman::Bookmark do
9
+ include CommandTestHelper
10
+
11
+ context 'ListCommand' do
12
+ before :each do
13
+ ResourceMocks.bookmarks
14
+ end
15
+
16
+ let(:cmd) { HammerCLIForeman::Bookmark::ListCommand.new('', ctx) }
17
+
18
+ context 'parameters' do
19
+ it_should_accept 'no arguments'
20
+ it_should_fail_with 'organization param', ['--organization-id=1']
21
+ it_should_fail_with 'location param', ['--location-id=1']
22
+ end
23
+
24
+ context 'output' do
25
+ let(:expected_record_count) { count_records(cmd.resource.call(:index)) }
26
+
27
+ it_should_print_n_records
28
+ it_should_print_column 'Id'
29
+ it_should_print_column 'Name'
30
+ it_should_print_column 'Controller'
31
+ it_should_print_column 'Search Query'
32
+ it_should_print_column 'Public'
33
+ it_should_print_column 'Owner Id'
34
+ it_should_print_column 'Owner Type'
35
+ end
36
+ end
37
+
38
+ context 'InfoCommand' do
39
+ let(:cmd) { HammerCLIForeman::Bookmark::InfoCommand.new('', ctx) }
40
+
41
+ context 'parameters' do
42
+ it_should_accept 'id', ['--id=1']
43
+ it_should_accept 'name', ['--name=active']
44
+ it_should_fail_with 'organization param', ['--organization-id=1']
45
+ it_should_fail_with 'location param', ['--location-id=1']
46
+ end
47
+
48
+ context 'output' do
49
+ with_params ['--id=1'] do
50
+ it_should_print_n_records 1
51
+ it_should_print_column 'Id'
52
+ it_should_print_column 'Name'
53
+ it_should_print_column 'Controller'
54
+ it_should_print_column 'Search Query'
55
+ it_should_print_column 'Public'
56
+ it_should_print_column 'Owner Id'
57
+ it_should_print_column 'Owner Type'
58
+ end
59
+ end
60
+ end
61
+
62
+ context 'CreateCommand' do
63
+ let(:cmd) { HammerCLIForeman::Bookmark::CreateCommand.new('', ctx) }
64
+
65
+ context 'parameters' do
66
+ it_should_accept 'name, public, controller, query',
67
+ ['--name=active', '--public=1', '--controller=hosts',
68
+ '--query=last_report > "35 minutes ago" and (status.applied > 0 or status.restarted > 0)']
69
+ it_should_fail_with 'organization param', ['--organization-id=1']
70
+ it_should_fail_with 'location param', ['--location-id=1']
71
+ end
72
+
73
+ end
74
+
75
+ context 'DeleteCommand' do
76
+ let(:cmd) { HammerCLIForeman::Bookmark::DeleteCommand.new('', ctx) }
77
+
78
+ context 'parameters' do
79
+ it_should_accept 'id', ['--id=1']
80
+ it_should_accept 'name', ['--name=active']
81
+ it_should_fail_with 'organization param', ['--organization-id=1']
82
+ it_should_fail_with 'location param', ['--location-id=1']
83
+ end
84
+ end
85
+
86
+ context 'UpdateCommand' do
87
+ let(:cmd) { HammerCLIForeman::Bookmark::UpdateCommand.new('', ctx) }
88
+
89
+ context 'parameters' do
90
+ it_should_accept 'id', ['--id=1']
91
+ it_should_accept 'name', ['--name=active']
92
+ it_should_accept 'name, public, controller, query',
93
+ ['--name=active', '--public=1', '--controller=hosts',
94
+ '--query=last_report > "35 minutes ago" and (status.applied > 0 or status.restarted > 0)']
95
+ it_should_fail_with 'organization param', ['--organization-id=1']
96
+ it_should_fail_with 'location param', ['--location-id=1']
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,87 @@
1
+ # frozen_string_literal: true
2
+
3
+ require File.join(File.dirname(__FILE__), 'test_helper')
4
+ require File.join(File.dirname(__FILE__), 'apipie_resource_mock')
5
+
6
+ require 'hammer_cli_foreman/compute_profile'
7
+
8
+ describe HammerCLIForeman::ComputeProfile do
9
+ include CommandTestHelper
10
+
11
+ context 'ListCommand' do
12
+ before :each do
13
+ ResourceMocks.compute_profiles
14
+ end
15
+
16
+ let(:cmd) { HammerCLIForeman::ComputeProfile::ListCommand.new('', ctx) }
17
+
18
+ context 'parameters' do
19
+ it_should_accept 'no arguments'
20
+ it_should_fail_with 'organization param', ['--organization-id=1']
21
+ it_should_fail_with 'location param', ['--location-id=1']
22
+ end
23
+
24
+ context 'output' do
25
+ let(:expected_record_count) { count_records(cmd.resource.call(:index)) }
26
+
27
+ it_should_print_n_records
28
+ it_should_print_column 'Id'
29
+ it_should_print_column 'Name'
30
+ end
31
+ end
32
+
33
+ context 'InfoCommand' do
34
+ let(:cmd) { HammerCLIForeman::ComputeProfile::InfoCommand.new('', ctx) }
35
+
36
+ context 'parameters' do
37
+ it_should_accept 'id', ['--id=1']
38
+ it_should_accept 'name', ['--name=test']
39
+ it_should_fail_with 'organization param', ['--organization-id=1']
40
+ it_should_fail_with 'location param', ['--location-id=1']
41
+ end
42
+
43
+ context 'output' do
44
+ with_params ['--id=1'] do
45
+ it_should_print_n_records 1
46
+ it_should_print_column 'Id'
47
+ it_should_print_column 'Name'
48
+ it_should_print_column 'Created at'
49
+ it_should_print_column 'Updated at'
50
+ it_should_print_column 'Compute attributes'
51
+ end
52
+ end
53
+ end
54
+
55
+ context 'CreateCommand' do
56
+ let(:cmd) { HammerCLIForeman::ComputeProfile::CreateCommand.new('', ctx) }
57
+
58
+ context 'parameters' do
59
+ it_should_accept 'name', ['--name=test']
60
+ it_should_fail_with 'organization param', ['--organization-id=1']
61
+ it_should_fail_with 'location param', ['--location-id=1']
62
+ end
63
+
64
+ end
65
+
66
+ context 'DeleteCommand' do
67
+ let(:cmd) { HammerCLIForeman::ComputeProfile::DeleteCommand.new('', ctx) }
68
+
69
+ context 'parameters' do
70
+ it_should_accept 'id', ['--id=1']
71
+ it_should_accept 'name', ['--name=test']
72
+ it_should_fail_with 'organization param', ['--organization-id=1']
73
+ it_should_fail_with 'location param', ['--location-id=1']
74
+ end
75
+ end
76
+
77
+ context 'UpdateCommand' do
78
+ let(:cmd) { HammerCLIForeman::ComputeProfile::UpdateCommand.new('', ctx) }
79
+
80
+ context 'parameters' do
81
+ it_should_accept 'id', ['--id=1']
82
+ it_should_accept 'name', ['--name=test']
83
+ it_should_fail_with 'organization param', ['--organization-id=1']
84
+ it_should_fail_with 'location param', ['--location-id=1']
85
+ end
86
+ end
87
+ end
@@ -16,6 +16,8 @@ describe HammerCLIForeman::ConfigGroup do
16
16
  context "parameters" do
17
17
  it_should_accept "no arguments"
18
18
  it_should_accept_search_params
19
+ it_should_fail_with 'organization param', ['--organization-id=1']
20
+ it_should_fail_with 'location param', ['--location-id=1']
19
21
  end
20
22
 
21
23
  context "output" do
@@ -31,6 +33,8 @@ describe HammerCLIForeman::ConfigGroup do
31
33
  context "parameters" do
32
34
  it_should_accept "id", ["--id=1"]
33
35
  it_should_accept "name", ["--name=group_x"]
36
+ it_should_fail_with 'organization param', ['--organization-id=1']
37
+ it_should_fail_with 'location param', ['--location-id=1']
34
38
  end
35
39
 
36
40
  context "output" do
@@ -48,6 +52,8 @@ describe HammerCLIForeman::ConfigGroup do
48
52
 
49
53
  context "parameters" do
50
54
  it_should_accept "name, puppetclass ids", ["--name=first_group", "--puppet-class-ids=1,2"]
55
+ it_should_fail_with 'organization param', ['--organization-id=1']
56
+ it_should_fail_with 'location param', ['--location-id=1']
51
57
  end
52
58
  end
53
59
 
@@ -57,6 +63,8 @@ describe HammerCLIForeman::ConfigGroup do
57
63
  context "parameters" do
58
64
  it_should_accept "name", ["--name=group_x"]
59
65
  it_should_accept "id", ["--id=1"]
66
+ it_should_fail_with 'organization param', ['--organization-id=1']
67
+ it_should_fail_with 'location param', ['--location-id=1']
60
68
  end
61
69
  end
62
70
 
@@ -67,6 +75,8 @@ describe HammerCLIForeman::ConfigGroup do
67
75
  context "parameters" do
68
76
  it_should_accept "name", ["--name=group_x"]
69
77
  it_should_accept "id", ["--id=1"]
78
+ it_should_fail_with 'organization param', ['--organization-id=1']
79
+ it_should_fail_with 'location param', ['--location-id=1']
70
80
  end
71
81
  end
72
82
  end
@@ -25,6 +25,7 @@ describe HammerCLIForeman::ConfigReport do
25
25
  it_should_print_n_records
26
26
  it_should_print_column "Id"
27
27
  it_should_print_column "Host"
28
+ it_should_print_column "Origin"
28
29
  it_should_print_column "Last report"
29
30
  it_should_print_column "Applied"
30
31
  it_should_print_column "Restarted"
@@ -132,29 +132,6 @@ describe HammerCLIForeman::Host do
132
132
  end
133
133
 
134
134
 
135
- context "PuppetRunCommand" do
136
-
137
- let(:cmd) { HammerCLIForeman::Host::PuppetRunCommand.new("", ctx) }
138
-
139
- context "parameters" do
140
- it_should_accept "name", ["--name=host"]
141
- it_should_accept "id", ["--id=1"]
142
- # it_should_fail_with "no arguments"
143
- # TODO: temporarily disabled, parameters are checked in the id resolver
144
-
145
- end
146
-
147
- context "output" do
148
- with_params ["--id=1"] do
149
- it "should inform that puppet was triggered" do
150
- cmd.stubs(:context).returns(ctx.update(:adapter => :test))
151
- _(proc { cmd.run(with_params) }).must_output "Puppet run triggered\n"
152
- end
153
- end
154
- end
155
- end
156
-
157
-
158
135
  context "ConfigReportsCommand" do
159
136
  before do
160
137
  ResourceMocks.mock_action_call(:config_reports, :index, [])
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ require File.join(File.dirname(__FILE__), 'test_helper')
4
+ require File.join(File.dirname(__FILE__), 'apipie_resource_mock')
5
+
6
+ require 'hammer_cli_foreman/mail_notification'
7
+
8
+ describe HammerCLIForeman::MailNotification do
9
+ include CommandTestHelper
10
+
11
+ context 'ListCommand' do
12
+ before :each do
13
+ ResourceMocks.mail_notifications
14
+ end
15
+
16
+ let(:cmd) { HammerCLIForeman::MailNotification::ListCommand.new('', ctx) }
17
+
18
+ context 'parameters' do
19
+ it_should_accept 'no arguments'
20
+ it_should_fail_with 'organization param', ['--organization-id=1']
21
+ it_should_fail_with 'location param', ['--location-id=1']
22
+ end
23
+
24
+ context 'output' do
25
+ let(:expected_record_count) { count_records(cmd.resource.call(:index)) }
26
+
27
+ it_should_print_n_records
28
+ it_should_print_column 'Id'
29
+ it_should_print_column 'Name'
30
+ end
31
+ end
32
+
33
+ context 'InfoCommand' do
34
+ let(:cmd) { HammerCLIForeman::MailNotification::InfoCommand.new('', ctx) }
35
+
36
+ context 'parameters' do
37
+ it_should_accept 'id', ['--id=1']
38
+ it_should_accept 'name', ['--name=test']
39
+ it_should_fail_with 'organization param', ['--organization-id=1']
40
+ it_should_fail_with 'location param', ['--location-id=1']
41
+ end
42
+
43
+ context 'output' do
44
+ with_params ['--id=1'] do
45
+ it_should_print_n_records 1
46
+ it_should_print_column 'Id'
47
+ it_should_print_column 'Name'
48
+ it_should_print_column 'Description'
49
+ it_should_print_column 'Subscription type'
50
+ end
51
+ end
52
+ end
53
+ end