hammer_cli_foreman 2.4.0 → 3.1.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.
- checksums.yaml +4 -4
- data/doc/release_notes.md +40 -0
- data/lib/hammer_cli_foreman/architecture.rb +5 -5
- data/lib/hammer_cli_foreman/associating_commands.rb +0 -24
- data/lib/hammer_cli_foreman/bookmark.rb +5 -5
- data/lib/hammer_cli_foreman/combination.rb +3 -13
- data/lib/hammer_cli_foreman/command_extensions/ping.rb +21 -2
- data/lib/hammer_cli_foreman/command_extensions/subnet.rb +25 -10
- data/lib/hammer_cli_foreman/command_extensions/update_common.rb +14 -0
- data/lib/hammer_cli_foreman/command_extensions/user.rb +9 -5
- data/lib/hammer_cli_foreman/command_extensions.rb +1 -2
- data/lib/hammer_cli_foreman/commands.rb +17 -11
- data/lib/hammer_cli_foreman/compute_attribute.rb +1 -1
- data/lib/hammer_cli_foreman/compute_profile.rb +5 -5
- data/lib/hammer_cli_foreman/compute_resource/ovirt.rb +2 -1
- data/lib/hammer_cli_foreman/compute_resource.rb +23 -0
- data/lib/hammer_cli_foreman/config_report.rb +2 -0
- data/lib/hammer_cli_foreman/filter.rb +2 -2
- data/lib/hammer_cli_foreman/host.rb +1 -47
- data/lib/hammer_cli_foreman/hostgroup.rb +14 -58
- data/lib/hammer_cli_foreman/hosts/common_update_options.rb +10 -31
- data/lib/hammer_cli_foreman/id_resolver.rb +7 -68
- data/lib/hammer_cli_foreman/location.rb +0 -6
- data/lib/hammer_cli_foreman/mail_notification.rb +2 -2
- data/lib/hammer_cli_foreman/model.rb +5 -5
- data/lib/hammer_cli_foreman/operating_system.rb +10 -10
- data/lib/hammer_cli_foreman/option_builders.rb +84 -52
- data/lib/hammer_cli_foreman/option_sources/id_params.rb +41 -11
- data/lib/hammer_cli_foreman/option_sources/ids_params.rb +39 -7
- data/lib/hammer_cli_foreman/option_sources.rb +0 -1
- data/lib/hammer_cli_foreman/organization.rb +0 -6
- data/lib/hammer_cli_foreman/ping.rb +6 -1
- data/lib/hammer_cli_foreman/references.rb +0 -16
- data/lib/hammer_cli_foreman/registration.rb +18 -0
- data/lib/hammer_cli_foreman/settings.rb +3 -3
- data/lib/hammer_cli_foreman/smart_proxy.rb +7 -57
- data/lib/hammer_cli_foreman/template.rb +3 -15
- data/lib/hammer_cli_foreman/user.rb +4 -4
- data/lib/hammer_cli_foreman/usergroup.rb +5 -5
- data/lib/hammer_cli_foreman/version.rb +1 -1
- data/lib/hammer_cli_foreman.rb +3 -21
- data/lib/minitest/coverage_reporter.rb +1 -1
- data/locale/ca/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/de/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/en/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/en_GB/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/es/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/fr/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/it/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/ja/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/ko/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/pt_BR/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/ru/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/zh_CN/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/locale/zh_TW/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
- data/test/data/2.4/foreman_api.json +1 -0
- data/test/data/2.5/foreman_api.json +1 -0
- data/test/data/3.1/foreman_api.json +1 -0
- data/test/functional/architecture_test.rb +37 -5
- data/test/functional/bookmark_test.rb +5 -2
- data/test/functional/compute_attribute_test.rb +20 -20
- data/test/functional/compute_profile_test.rb +14 -1
- data/test/functional/compute_resource_test.rb +37 -0
- data/test/functional/filter_test.rb +2 -1
- data/test/functional/host_test.rb +65 -11
- data/test/functional/hostgroup/create_test.rb +11 -117
- data/test/functional/hostgroup/update_test.rb +11 -79
- data/test/functional/http_proxy_test.rb +12 -0
- data/test/functional/location_test.rb +13 -3
- data/test/functional/mail_notification_test.rb +3 -1
- data/test/functional/media_test.rb +11 -0
- data/test/functional/model_test.rb +3 -1
- data/test/functional/operating_system_test.rb +3 -1
- data/test/functional/personal_access_token_test.rb +4 -4
- data/test/functional/ping_test.rb +33 -0
- data/test/functional/realm_test.rb +11 -0
- data/test/functional/registration_test.rb +8 -0
- data/test/functional/report_template_test.rb +11 -0
- data/test/functional/settings_test.rb +4 -4
- data/test/functional/template_test.rb +87 -48
- data/test/functional/user_mail_notification_test.rb +3 -3
- data/test/functional/user_test.rb +11 -0
- data/test/functional/usergroup_test.rb +3 -1
- data/test/test_helper.rb +1 -1
- data/test/unit/apipie_resource_mock.rb +1 -39
- data/test/unit/architecture_test.rb +10 -10
- data/test/unit/bookmark_test.rb +10 -14
- data/test/unit/commands_test.rb +1 -2
- data/test/unit/compute_profile_test.rb +10 -10
- data/test/unit/config_report_test.rb +1 -0
- data/test/unit/helpers/command.rb +0 -8
- data/test/unit/host_test.rb +14 -61
- data/test/unit/hostgroup_test.rb +7 -26
- data/test/unit/id_resolver_test.rb +0 -28
- data/test/unit/mail_notification_test.rb +4 -4
- data/test/unit/model_test.rb +47 -47
- data/test/unit/operating_system_test.rb +10 -16
- data/test/unit/option_builders_test.rb +88 -83
- data/test/unit/settings_test.rb +4 -4
- data/test/unit/smart_proxy_test.rb +0 -12
- data/test/unit/usergroup_test.rb +10 -10
- metadata +115 -128
- data/lib/hammer_cli_foreman/command_extensions/puppet_environment.rb +0 -29
- data/lib/hammer_cli_foreman/command_extensions/puppet_environments.rb +0 -29
- data/lib/hammer_cli_foreman/config_group.rb +0 -45
- data/lib/hammer_cli_foreman/option_sources/puppet_environment_params.rb +0 -59
- data/lib/hammer_cli_foreman/puppet_class.rb +0 -61
- data/lib/hammer_cli_foreman/puppet_environment.rb +0 -65
- data/lib/hammer_cli_foreman/smart_class_parameter.rb +0 -189
- data/test/functional/config_group_test.rb +0 -50
- data/test/functional/proxy_test.rb +0 -86
- data/test/functional/smart_class_parameter_test.rb +0 -97
- data/test/reports/TEST-Minitest-Result.xml +0 -4344
- data/test/unit/config_group_test.rb +0 -82
- data/test/unit/puppet_class_test.rb +0 -72
- data/test/unit/puppet_environment_test.rb +0 -114
- data/test/unit/smart_class_parameter_test.rb +0 -113
|
@@ -68,25 +68,6 @@ module HammerCLIForeman
|
|
|
68
68
|
run_cmd(%w(hostgroup update --id 1 --domain d1))
|
|
69
69
|
end
|
|
70
70
|
|
|
71
|
-
it 'allows environment id' do
|
|
72
|
-
api_expects(:hostgroups, :update) do |p|
|
|
73
|
-
p['hostgroup']['environment_id'] == 1 &&
|
|
74
|
-
p['id'] == '1'
|
|
75
|
-
end
|
|
76
|
-
run_cmd(%w(hostgroup update --id 1 --environment-id 1))
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
it 'allows environment name' do
|
|
80
|
-
api_expects(:environments, :index) do |p|
|
|
81
|
-
p[:search] = "name = \"env1\""
|
|
82
|
-
end.returns(index_response([{'id' => 1}]))
|
|
83
|
-
api_expects(:hostgroups, :update) do |p|
|
|
84
|
-
p['hostgroup']['environment_id'] == 1 &&
|
|
85
|
-
p['id'] == '1'
|
|
86
|
-
end
|
|
87
|
-
run_cmd(%w(hostgroup update --id 1 --environment env1))
|
|
88
|
-
end
|
|
89
|
-
|
|
90
71
|
it 'allows location ids' do
|
|
91
72
|
api_expects(:hostgroups, :update) do |p|
|
|
92
73
|
p['hostgroup']['location_ids'] == ['1','4'] &&
|
|
@@ -182,6 +163,17 @@ module HammerCLIForeman
|
|
|
182
163
|
run_cmd(%w(hostgroup update --id 1 --parent parent_hg))
|
|
183
164
|
end
|
|
184
165
|
|
|
166
|
+
it 'allows parent hostgroup title' do
|
|
167
|
+
api_expects(:hostgroups, :index) do |p|
|
|
168
|
+
p[:search] = 'title = "parent_hg"'
|
|
169
|
+
end.returns(index_response([{ 'id' => 1 }]))
|
|
170
|
+
api_expects(:hostgroups, :update) do |p|
|
|
171
|
+
p['hostgroup']['parent_id'] == 1 &&
|
|
172
|
+
p['id'] == '1'
|
|
173
|
+
end
|
|
174
|
+
run_cmd(%w[hostgroup update --id 1 --parent parent_hg])
|
|
175
|
+
end
|
|
176
|
+
|
|
185
177
|
it 'allows partition table id' do
|
|
186
178
|
api_expects(:hostgroups, :update) do |p|
|
|
187
179
|
p['hostgroup']['ptable_id'] == 1 &&
|
|
@@ -201,66 +193,6 @@ module HammerCLIForeman
|
|
|
201
193
|
run_cmd(%w(hostgroup update --id 1 --partition-table pt1))
|
|
202
194
|
end
|
|
203
195
|
|
|
204
|
-
it 'allows puppet ca proxy id' do
|
|
205
|
-
api_expects(:hostgroups, :update).with_params({
|
|
206
|
-
:id => '1',
|
|
207
|
-
:hostgroup => { :puppet_ca_proxy_id => 1 }
|
|
208
|
-
})
|
|
209
|
-
run_cmd(%w(hostgroup update --id 1 --puppet-ca-proxy-id 1))
|
|
210
|
-
end
|
|
211
|
-
|
|
212
|
-
it 'allows puppet ca proxy name' do
|
|
213
|
-
api_expects(:smart_proxies, :index) do |p|
|
|
214
|
-
p[:search] = "name = \"sp1\""
|
|
215
|
-
end.returns(index_response([{'id' => 1}]))
|
|
216
|
-
api_expects(:hostgroups, :update) do |p|
|
|
217
|
-
p['hostgroup']['puppet_ca_proxy_id'] == 1 &&
|
|
218
|
-
p['id'] == '1'
|
|
219
|
-
end
|
|
220
|
-
run_cmd(%w(hostgroup update --id 1 --puppet-ca-proxy sp1))
|
|
221
|
-
end
|
|
222
|
-
|
|
223
|
-
it 'allows puppet class ids' do
|
|
224
|
-
api_expects(:hostgroups, :update) do |p|
|
|
225
|
-
p['hostgroup']['puppetclass_ids'] == ['1','2'] &&
|
|
226
|
-
p['id'] == '1'
|
|
227
|
-
end
|
|
228
|
-
run_cmd(%w(hostgroup update --id 1 --puppet-class-ids 1,2))
|
|
229
|
-
end
|
|
230
|
-
|
|
231
|
-
it 'allows puppet class names' do
|
|
232
|
-
api_expects(:puppetclasses, :index) do |p|
|
|
233
|
-
p[:search] = "name = \"pc1\" or name = \"pc2\""
|
|
234
|
-
end.returns(index_response('puppetclasses' => [
|
|
235
|
-
{'id' => 1, 'name' => 'pc1'},
|
|
236
|
-
{'id' => 2, 'name' => 'pc2'}
|
|
237
|
-
]))
|
|
238
|
-
api_expects(:hostgroups, :update) do |p|
|
|
239
|
-
p['hostgroup']['puppetclass_ids'] == [1,2] &&
|
|
240
|
-
p['id'] == '1'
|
|
241
|
-
end
|
|
242
|
-
run_cmd(%w(hostgroup update --id 1 --puppet-classes pc1,pc2))
|
|
243
|
-
end
|
|
244
|
-
|
|
245
|
-
it 'allows puppet proxy id' do
|
|
246
|
-
api_expects(:hostgroups, :update).with_params({
|
|
247
|
-
:id => '1',
|
|
248
|
-
:hostgroup => { :puppet_proxy_id => 1 }
|
|
249
|
-
})
|
|
250
|
-
run_cmd(%w(hostgroup update --id 1 --puppet-proxy-id 1))
|
|
251
|
-
end
|
|
252
|
-
|
|
253
|
-
it 'allows puppet proxy name' do
|
|
254
|
-
api_expects(:smart_proxies, :index) do |p|
|
|
255
|
-
p[:search] = "name = \"sp1\""
|
|
256
|
-
end.returns(index_response([{'id' => 1}]))
|
|
257
|
-
api_expects(:hostgroups, :update) do |p|
|
|
258
|
-
p['hostgroup']['puppet_proxy_id'] == 1 &&
|
|
259
|
-
p['id'] == '1'
|
|
260
|
-
end
|
|
261
|
-
run_cmd(%w(hostgroup update --id 1 --puppet-proxy sp1))
|
|
262
|
-
end
|
|
263
|
-
|
|
264
196
|
it 'allows realm id' do
|
|
265
197
|
api_expects(:hostgroups, :update) do |p|
|
|
266
198
|
p['hostgroup']['realm_id'] == 1 &&
|
|
@@ -61,9 +61,21 @@ describe 'httpproxy' do
|
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
it 'deletes an http proxy' do
|
|
64
|
+
api_expects(:http_proxies, :destroy, 'Delete proxy').returns(http_proxy)
|
|
65
|
+
|
|
64
66
|
expected_result = success_result("Http proxy deleted.\n")
|
|
65
67
|
|
|
66
68
|
result = run_cmd(%w(http-proxy delete --id 1))
|
|
67
69
|
assert_cmd(expected_result, result)
|
|
68
70
|
end
|
|
71
|
+
|
|
72
|
+
it 'updates nothing without related parameters' do
|
|
73
|
+
api_expects(:http_proxies, :update, 'Update proxy with no params').returns({})
|
|
74
|
+
|
|
75
|
+
expected_result = success_result("Nothing to update.\n")
|
|
76
|
+
|
|
77
|
+
result = run_cmd(%w(http-proxy update --id 1))
|
|
78
|
+
assert_cmd(expected_result, result)
|
|
79
|
+
end
|
|
80
|
+
|
|
69
81
|
end
|
|
@@ -208,7 +208,6 @@ describe 'info' do
|
|
|
208
208
|
provisioning_templates: [],
|
|
209
209
|
domains: [],
|
|
210
210
|
realms: [],
|
|
211
|
-
environments: [],
|
|
212
211
|
hostgroups: [],
|
|
213
212
|
organizations: [],
|
|
214
213
|
parameters: []
|
|
@@ -242,8 +241,6 @@ describe 'info' do
|
|
|
242
241
|
'',
|
|
243
242
|
'Realms:',
|
|
244
243
|
'',
|
|
245
|
-
'Environments:',
|
|
246
|
-
'',
|
|
247
244
|
'Hostgroups:',
|
|
248
245
|
'',
|
|
249
246
|
'Parameters:',
|
|
@@ -272,4 +269,17 @@ describe 'update' do
|
|
|
272
269
|
result = run_cmd(@cmd + params)
|
|
273
270
|
assert_cmd(success_result("Location updated.\n"), result)
|
|
274
271
|
end
|
|
272
|
+
|
|
273
|
+
it 'updates nothing without related parameters' do
|
|
274
|
+
params = %w[--id=1]
|
|
275
|
+
|
|
276
|
+
api_expects(:locations, :index)
|
|
277
|
+
api_expects(:locations, :update, 'Update location with no params').returns({})
|
|
278
|
+
|
|
279
|
+
expected_result = success_result("Nothing to update.\n")
|
|
280
|
+
|
|
281
|
+
result = run_cmd(@cmd + params)
|
|
282
|
+
assert_cmd(expected_result, result)
|
|
283
|
+
end
|
|
284
|
+
|
|
275
285
|
end
|
|
@@ -26,7 +26,7 @@ describe 'mail_notification' do
|
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
it 'should run list command with defaults' do
|
|
29
|
-
providers = { 'foreman' => HammerCLIForeman::Defaults.new(api_connection({}, '2.
|
|
29
|
+
providers = { 'foreman' => HammerCLIForeman::Defaults.new(api_connection({}, '2.5')) }
|
|
30
30
|
defaults = HammerCLI::Defaults.new(
|
|
31
31
|
{
|
|
32
32
|
organization_id: {
|
|
@@ -39,6 +39,8 @@ describe 'mail_notification' do
|
|
|
39
39
|
)
|
|
40
40
|
defaults.stubs(:write_to_file).returns(true)
|
|
41
41
|
defaults.stubs(:providers).returns(providers)
|
|
42
|
+
api_expects(:users, :index, 'Find user').with_params(search: 'login=admin').returns(index_response([{ 'default_organization' => { 'id' => 2 } }]))
|
|
43
|
+
api_expects(:users, :index, 'Find user').with_params(search: 'login=admin').returns(index_response([{ 'default_location' => { 'id' => 1 } }]))
|
|
42
44
|
api_expects(:mail_notifications, :index, 'List mail notifications').returns(@mail_notifications)
|
|
43
45
|
|
|
44
46
|
result = run_cmd(@cmd, { use_defaults: true, defaults: defaults })
|
|
@@ -126,5 +126,16 @@ describe 'medium' do
|
|
|
126
126
|
result = run_cmd(@cmd + params)
|
|
127
127
|
assert_cmd(success_result("Installation medium updated.\n"), result)
|
|
128
128
|
end
|
|
129
|
+
|
|
130
|
+
it 'updates nothing without medium related parameters' do
|
|
131
|
+
params = %w[--id=1]
|
|
132
|
+
|
|
133
|
+
api_expects(:media, :update, 'Update medium with no params').returns({})
|
|
134
|
+
|
|
135
|
+
expected_result = success_result("Nothing to update.\n")
|
|
136
|
+
|
|
137
|
+
result = run_cmd(@cmd + params)
|
|
138
|
+
assert_cmd(expected_result, result)
|
|
139
|
+
end
|
|
129
140
|
end
|
|
130
141
|
end
|
|
@@ -26,7 +26,7 @@ describe 'model' do
|
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
it 'should run list command with defaults' do
|
|
29
|
-
providers = { 'foreman' => HammerCLIForeman::Defaults.new(api_connection({}, '2.
|
|
29
|
+
providers = { 'foreman' => HammerCLIForeman::Defaults.new(api_connection({}, '2.5')) }
|
|
30
30
|
defaults = HammerCLI::Defaults.new(
|
|
31
31
|
{
|
|
32
32
|
organization_id: {
|
|
@@ -39,6 +39,8 @@ describe 'model' do
|
|
|
39
39
|
)
|
|
40
40
|
defaults.stubs(:write_to_file).returns(true)
|
|
41
41
|
defaults.stubs(:providers).returns(providers)
|
|
42
|
+
api_expects(:users, :index, 'Find user').with_params(search: 'login=admin').returns(index_response([{ 'default_organization' => { 'id' => 2 } }]))
|
|
43
|
+
api_expects(:users, :index, 'Find user').with_params(search: 'login=admin').returns(index_response([{ 'default_location' => { 'id' => 1 } }]))
|
|
42
44
|
api_expects(:models, :index, 'List models').returns(@models)
|
|
43
45
|
|
|
44
46
|
result = run_cmd(@cmd, { use_defaults: true, defaults: defaults })
|
|
@@ -27,7 +27,7 @@ describe 'operating_system' do
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
it 'should run list command with defaults' do
|
|
30
|
-
providers = { 'foreman' => HammerCLIForeman::Defaults.new(api_connection({}, '2.
|
|
30
|
+
providers = { 'foreman' => HammerCLIForeman::Defaults.new(api_connection({}, '2.5')) }
|
|
31
31
|
defaults = HammerCLI::Defaults.new(
|
|
32
32
|
{
|
|
33
33
|
organization_id: {
|
|
@@ -40,6 +40,8 @@ describe 'operating_system' do
|
|
|
40
40
|
)
|
|
41
41
|
defaults.stubs(:write_to_file).returns(true)
|
|
42
42
|
defaults.stubs(:providers).returns(providers)
|
|
43
|
+
api_expects(:users, :index, 'Find user').with_params(search: 'login=admin').returns(index_response([{ 'default_organization' => { 'id' => 2 } }]))
|
|
44
|
+
api_expects(:users, :index, 'Find user').with_params(search: 'login=admin').returns(index_response([{ 'default_location' => { 'id' => 1 } }]))
|
|
43
45
|
api_expects(:operatingsystems, :index, 'List operating systems').returns(@operating_system)
|
|
44
46
|
|
|
45
47
|
result = run_cmd(@cmd, { use_defaults: true, defaults: defaults })
|
|
@@ -37,7 +37,7 @@ describe 'personal_access_token' do
|
|
|
37
37
|
|
|
38
38
|
it 'lists all access tokens for a given user' do
|
|
39
39
|
api_expects(:personal_access_tokens, :index, 'List').with_params(
|
|
40
|
-
'user_id' => 1, 'page' => 1, 'per_page' => 1000
|
|
40
|
+
'user_id' => '1', 'page' => 1, 'per_page' => 1000
|
|
41
41
|
).returns(index_response([access_token, active_access_token]))
|
|
42
42
|
|
|
43
43
|
output = IndexMatcher.new([
|
|
@@ -67,7 +67,7 @@ describe 'personal_access_token' do
|
|
|
67
67
|
|
|
68
68
|
it 'creates an access token to a given user' do
|
|
69
69
|
api_expects(:personal_access_tokens, :create).with_params(
|
|
70
|
-
'user_id' => 1, 'personal_access_token' => {
|
|
70
|
+
'user_id' => '1', 'personal_access_token' => {
|
|
71
71
|
'expires_at' => '01/01/2048', 'name' => 'test'
|
|
72
72
|
}
|
|
73
73
|
).returns(access_token)
|
|
@@ -85,7 +85,7 @@ describe 'personal_access_token' do
|
|
|
85
85
|
|
|
86
86
|
it 'shows the personal access token' do
|
|
87
87
|
api_expects(:personal_access_tokens, :show, 'Show PAT').with_params(
|
|
88
|
-
'id' => '1', 'user_id' => 1
|
|
88
|
+
'id' => '1', 'user_id' => '1'
|
|
89
89
|
).returns(access_token)
|
|
90
90
|
|
|
91
91
|
output = OutputMatcher.new([
|
|
@@ -109,7 +109,7 @@ describe 'personal_access_token' do
|
|
|
109
109
|
let(:params) { ['--id=1', '--user-id=1'] }
|
|
110
110
|
it 'deletes an access token to a given user' do
|
|
111
111
|
api_expects(:personal_access_tokens, :destroy, 'Revoke PAT').with_params(
|
|
112
|
-
'id' => '1', 'user_id' => 1
|
|
112
|
+
'id' => '1', 'user_id' => '1'
|
|
113
113
|
).returns(access_token)
|
|
114
114
|
|
|
115
115
|
expected_result = success_result(
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require File.join(File.dirname(__FILE__), 'test_helper')
|
|
2
4
|
|
|
3
5
|
describe 'ping' do
|
|
@@ -30,5 +32,36 @@ describe 'ping' do
|
|
|
30
32
|
result = run_cmd(cmd)
|
|
31
33
|
assert_cmd(expected_result, result)
|
|
32
34
|
end
|
|
35
|
+
|
|
36
|
+
it 'returns 1 if one of the services failed and shows unrecognized services' do
|
|
37
|
+
ping_results['results']['new_plugin'] = {
|
|
38
|
+
'services' => {
|
|
39
|
+
'first' => {
|
|
40
|
+
'status' => 'FAIL'
|
|
41
|
+
},
|
|
42
|
+
'second' => {
|
|
43
|
+
'status' => 'ok'
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
'status' => 'FAIL'
|
|
47
|
+
}
|
|
48
|
+
api_expects(:ping, :ping, 'Ping').returns(ping_results)
|
|
49
|
+
|
|
50
|
+
expected_result = CommandExpectation.new
|
|
51
|
+
expected_result.expected_out = OutputMatcher.new(
|
|
52
|
+
[
|
|
53
|
+
'database:',
|
|
54
|
+
' Status: ok',
|
|
55
|
+
' Server Response: Duration: 0ms'
|
|
56
|
+
]
|
|
57
|
+
)
|
|
58
|
+
expected_result.expected_err =
|
|
59
|
+
['1 more service(s) failed, but not shown:',
|
|
60
|
+
'first',
|
|
61
|
+
''].join("\n")
|
|
62
|
+
expected_result.expected_exit_code = 1
|
|
63
|
+
result = run_cmd(cmd)
|
|
64
|
+
assert_cmd(expected_result, result)
|
|
65
|
+
end
|
|
33
66
|
end
|
|
34
67
|
end
|
|
@@ -99,5 +99,16 @@ describe 'realm' do
|
|
|
99
99
|
result = run_cmd(@cmd + params)
|
|
100
100
|
assert_cmd(success_result("Realm [%{name}] updated.\n"), result)
|
|
101
101
|
end
|
|
102
|
+
|
|
103
|
+
it 'updates nothing without realm related parameters' do
|
|
104
|
+
params = %w[--id=1]
|
|
105
|
+
|
|
106
|
+
api_expects(:realms, :update, 'Update realm with no params').returns({})
|
|
107
|
+
|
|
108
|
+
expected_result = success_result("Nothing to update.\n")
|
|
109
|
+
|
|
110
|
+
result = run_cmd(@cmd + params)
|
|
111
|
+
assert_cmd(expected_result, result)
|
|
112
|
+
end
|
|
102
113
|
end
|
|
103
114
|
end
|
|
@@ -195,6 +195,17 @@ describe 'report-template' do
|
|
|
195
195
|
result = run_cmd(cmd + params)
|
|
196
196
|
assert_cmd(success_result("Report template updated.\n"), result)
|
|
197
197
|
end
|
|
198
|
+
|
|
199
|
+
it 'updates nothing without template related parameters' do
|
|
200
|
+
params = %w[--id=1]
|
|
201
|
+
|
|
202
|
+
api_expects(:report_templates, :update, 'Update template with no params').returns({})
|
|
203
|
+
|
|
204
|
+
expected_result = success_result("Nothing to update.\n")
|
|
205
|
+
|
|
206
|
+
result = run_cmd(cmd + params)
|
|
207
|
+
assert_cmd(expected_result, result)
|
|
208
|
+
end
|
|
198
209
|
end
|
|
199
210
|
|
|
200
211
|
describe 'dump' do
|
|
@@ -32,7 +32,7 @@ describe 'Settings' do
|
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
it 'should run list command with defaults' do
|
|
35
|
-
providers = { 'foreman' => HammerCLIForeman::Defaults.new(api_connection({}, '2.
|
|
35
|
+
providers = { 'foreman' => HammerCLIForeman::Defaults.new(api_connection({}, '2.5')) }
|
|
36
36
|
defaults = HammerCLI::Defaults.new(
|
|
37
37
|
{
|
|
38
38
|
organization_id: {
|
|
@@ -45,9 +45,9 @@ describe 'Settings' do
|
|
|
45
45
|
)
|
|
46
46
|
defaults.stubs(:write_to_file).returns(true)
|
|
47
47
|
defaults.stubs(:providers).returns(providers)
|
|
48
|
-
api_expects(:
|
|
49
|
-
|
|
50
|
-
).returns(
|
|
48
|
+
api_expects(:users, :index, 'Find user').with_params(search: 'login=admin').returns(index_response([{ 'default_organization' => { 'id' => 2 } }]))
|
|
49
|
+
api_expects(:users, :index, 'Find user').with_params(search: 'login=admin').returns(index_response([{ 'default_location' => { 'id' => 1 } }]))
|
|
50
|
+
api_expects(:settings, :index, 'List settings').returns(setting)
|
|
51
51
|
|
|
52
52
|
result = run_cmd(@cmd, { use_defaults: true, defaults: defaults })
|
|
53
53
|
_(result.exit_code).must_equal HammerCLI::EX_OK
|
|
@@ -85,7 +85,6 @@ describe 'template' do
|
|
|
85
85
|
it "doesn't send snippet flag when --type is undefined" do
|
|
86
86
|
params = ['--id=1', '--locked=true']
|
|
87
87
|
|
|
88
|
-
api_expects(:template_kinds, :index, 'Get list of template kinds').returns(index_response([]))
|
|
89
88
|
api_expects(:provisioning_templates, :update, 'Update the template') do |par|
|
|
90
89
|
par['id'] == '1' &&
|
|
91
90
|
par['provisioning_template']['locked'] == true
|
|
@@ -95,6 +94,59 @@ describe 'template' do
|
|
|
95
94
|
|
|
96
95
|
assert_cmd(success_result("Provisioning template updated.\n"), result)
|
|
97
96
|
end
|
|
97
|
+
|
|
98
|
+
it 'updates nothing without template related parameters' do
|
|
99
|
+
params = %w[--id=1 --organization-id=1 --location-id=1]
|
|
100
|
+
|
|
101
|
+
api_expects(:provisioning_templates, :update, 'Update template with no params').returns({})
|
|
102
|
+
|
|
103
|
+
expected_result = success_result("Nothing to update.\n")
|
|
104
|
+
|
|
105
|
+
result = run_cmd(@cmd + params)
|
|
106
|
+
assert_cmd(expected_result, result)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
it 'should update a template' do
|
|
110
|
+
params = ['--id=1', '--type=snippet']
|
|
111
|
+
|
|
112
|
+
expected_result = CommandExpectation.new
|
|
113
|
+
expected_result.expected_out =
|
|
114
|
+
['Provisioning template updated.',
|
|
115
|
+
''].join("\n")
|
|
116
|
+
expected_result.expected_exit_code = HammerCLI::EX_OK
|
|
117
|
+
|
|
118
|
+
api_expects(:provisioning_templates, :update, 'Update template with params') do |p|
|
|
119
|
+
p['id'] == '1' && p['provisioning_template']['snippet'] == true
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
result = run_cmd(@cmd + params)
|
|
123
|
+
assert_cmd(expected_result, result)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
it 'should update a template by name' do
|
|
127
|
+
params = ['--name=tpl', '--type=provision']
|
|
128
|
+
|
|
129
|
+
expected_result = CommandExpectation.new
|
|
130
|
+
expected_result.expected_out =
|
|
131
|
+
['Provisioning template updated.',
|
|
132
|
+
''].join("\n")
|
|
133
|
+
expected_result.expected_exit_code = HammerCLI::EX_OK
|
|
134
|
+
|
|
135
|
+
api_expects_search(:provisioning_templates, name: 'tpl').returns(
|
|
136
|
+
index_response([{ 'id' => '1' }])
|
|
137
|
+
)
|
|
138
|
+
api_expects_search(:template_kinds, name: 'provision').returns(
|
|
139
|
+
index_response([{ 'id' => '1' }])
|
|
140
|
+
)
|
|
141
|
+
api_expects(:provisioning_templates, :update, 'Update template with params') do |p|
|
|
142
|
+
p['id'] == '1' &&
|
|
143
|
+
p['provisioning_template']['snippet'] == false &&
|
|
144
|
+
p['provisioning_template']['template_kind_id'] == '1'
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
result = run_cmd(@cmd + params)
|
|
148
|
+
assert_cmd(expected_result, result)
|
|
149
|
+
end
|
|
98
150
|
end
|
|
99
151
|
|
|
100
152
|
describe 'create' do
|
|
@@ -108,65 +160,53 @@ describe 'template' do
|
|
|
108
160
|
expected_result = CommandExpectation.new
|
|
109
161
|
expected_result.expected_err =
|
|
110
162
|
['Could not create the provisioning template:',
|
|
111
|
-
|
|
112
|
-
' ',
|
|
113
|
-
" See: 'hammer template create --help'.",
|
|
163
|
+
' Error: template_kind not found.',
|
|
114
164
|
''].join("\n")
|
|
115
|
-
expected_result.expected_exit_code = HammerCLI::
|
|
165
|
+
expected_result.expected_exit_code = HammerCLI::EX_SOFTWARE
|
|
116
166
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
167
|
+
api_expects_search(:template_kinds, name: 'unknown').returns(
|
|
168
|
+
index_response([])
|
|
169
|
+
)
|
|
120
170
|
|
|
121
171
|
result = run_cmd(@cmd + params)
|
|
122
172
|
assert_cmd(expected_result, result)
|
|
123
173
|
end
|
|
124
|
-
end
|
|
125
174
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
@cmd = %w(template combination)
|
|
129
|
-
end
|
|
175
|
+
it 'should create a template' do
|
|
176
|
+
params = ['--name=tpl', '--file=Gemfile', '--type=provision']
|
|
130
177
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
178
|
+
expected_result = CommandExpectation.new
|
|
179
|
+
expected_result.expected_out =
|
|
180
|
+
['Provisioning template created.',
|
|
181
|
+
''].join("\n")
|
|
182
|
+
expected_result.expected_exit_code = HammerCLI::EX_OK
|
|
183
|
+
|
|
184
|
+
api_expects_search(:template_kinds, name: 'provision').returns(
|
|
185
|
+
index_response([{ 'id' => '1' }])
|
|
186
|
+
)
|
|
187
|
+
api_expects(:provisioning_templates, :create, 'Create template with params') do |p|
|
|
188
|
+
p['provisioning_template']['name'] == 'tpl' &&
|
|
189
|
+
p['provisioning_template']['snippet'] == false &&
|
|
190
|
+
p['provisioning_template']['template_kind_id'] = '1'
|
|
140
191
|
end
|
|
141
192
|
|
|
142
193
|
result = run_cmd(@cmd + params)
|
|
143
194
|
assert_cmd(expected_result, result)
|
|
144
195
|
end
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
describe 'combinations' do
|
|
199
|
+
before do
|
|
200
|
+
@cmd = %w(template combination)
|
|
201
|
+
end
|
|
145
202
|
|
|
146
203
|
it 'should create new combination' do
|
|
147
|
-
params = ['create','--provisioning-template-id=10', '--hostgroup-id=1'
|
|
204
|
+
params = ['create','--provisioning-template-id=10', '--hostgroup-id=1']
|
|
148
205
|
expected_result = success_result("Template combination created.\n")
|
|
149
206
|
api_expects(:template_combinations, :create, 'Create template combination') do |params|
|
|
150
|
-
params['provisioning_template_id'] == 10 &&
|
|
151
|
-
params['hostgroup_id'] == 1 &&
|
|
152
|
-
params['
|
|
153
|
-
params['template_combination'] == {'environment_id' => 1, 'hostgroup_id' => 1}
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
result = run_cmd(@cmd + params)
|
|
157
|
-
assert_cmd(expected_result, result)
|
|
158
|
-
end
|
|
159
|
-
|
|
160
|
-
it 'should update combination with warning' do
|
|
161
|
-
params = ['update', '--id=3', '--provisioning-template-id=10', '--hostgroup-id=1', '--environment-id=1']
|
|
162
|
-
expected_result = success_result("Template combination updated.\n")
|
|
163
|
-
expected_result.expected_err = "Warning: Option --environment-id is deprecated. Use --puppet-environment[-id] instead\n"
|
|
164
|
-
api_expects(:template_combinations, :update, 'Update template combination') do |params|
|
|
165
|
-
params['id'] == '3' &&
|
|
166
|
-
params['provisioning_template_id'] == 10 &&
|
|
167
|
-
params['hostgroup_id'] == 1 &&
|
|
168
|
-
params['environment_id'] == 1 &&
|
|
169
|
-
params['template_combination'] == { 'environment_id' => 1, 'hostgroup_id' => 1 }
|
|
207
|
+
params['provisioning_template_id'] == '10' &&
|
|
208
|
+
params['hostgroup_id'] == '1' &&
|
|
209
|
+
params['template_combination'] == { 'hostgroup_id' => '1' }
|
|
170
210
|
end
|
|
171
211
|
|
|
172
212
|
result = run_cmd(@cmd + params)
|
|
@@ -174,14 +214,13 @@ describe 'template' do
|
|
|
174
214
|
end
|
|
175
215
|
|
|
176
216
|
it 'should update combination' do
|
|
177
|
-
params = ['update', '--id=3', '--provisioning-template-id=10', '--hostgroup-id=1'
|
|
217
|
+
params = ['update', '--id=3', '--provisioning-template-id=10', '--hostgroup-id=1']
|
|
178
218
|
expected_result = success_result("Template combination updated.\n")
|
|
179
219
|
api_expects(:template_combinations, :update, 'Update template combination') do |params|
|
|
180
220
|
params['id'] == '3' &&
|
|
181
|
-
params['provisioning_template_id'] == 10 &&
|
|
182
|
-
params['hostgroup_id'] == 1 &&
|
|
183
|
-
params['
|
|
184
|
-
params['template_combination'] == { 'environment_id' => 1, 'hostgroup_id' => 1 }
|
|
221
|
+
params['provisioning_template_id'] == '10' &&
|
|
222
|
+
params['hostgroup_id'] == '1' &&
|
|
223
|
+
params['template_combination'] == { 'hostgroup_id' => '1' }
|
|
185
224
|
end
|
|
186
225
|
|
|
187
226
|
result = run_cmd(@cmd + params)
|
|
@@ -55,9 +55,9 @@ describe 'user_mail_notification' do
|
|
|
55
55
|
params = ['--user-id=2']
|
|
56
56
|
|
|
57
57
|
expected_result = common_error_result(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
@cmd,
|
|
59
|
+
'Could not find mail_notification, please set one of options --mail-notification-id, --mail-notification.',
|
|
60
|
+
'Could not add user mail notification'
|
|
61
61
|
)
|
|
62
62
|
|
|
63
63
|
result = run_cmd(@cmd + params)
|
|
@@ -82,6 +82,17 @@ describe "user" do
|
|
|
82
82
|
assert_cmd(expected_result, result)
|
|
83
83
|
end
|
|
84
84
|
|
|
85
|
+
it 'updates nothing without user related parameters' do
|
|
86
|
+
params = %w[--id=1]
|
|
87
|
+
|
|
88
|
+
api_expects(:users, :update, 'Update user with no params').returns({})
|
|
89
|
+
|
|
90
|
+
expected_result = success_result("Nothing to update.\n")
|
|
91
|
+
|
|
92
|
+
result = run_cmd(cmd + params)
|
|
93
|
+
assert_cmd(expected_result, result)
|
|
94
|
+
end
|
|
95
|
+
|
|
85
96
|
describe "update password" do
|
|
86
97
|
def replace_foreman_connection(connection)
|
|
87
98
|
HammerCLI.context[:api_connection].drop('foreman')
|
|
@@ -27,7 +27,7 @@ describe 'user-group' do
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
it 'should run list command with defaults' do
|
|
30
|
-
providers = { 'foreman' => HammerCLIForeman::Defaults.new(api_connection({}, '2.
|
|
30
|
+
providers = { 'foreman' => HammerCLIForeman::Defaults.new(api_connection({}, '2.5')) }
|
|
31
31
|
defaults = HammerCLI::Defaults.new(
|
|
32
32
|
{
|
|
33
33
|
organization_id: {
|
|
@@ -40,6 +40,8 @@ describe 'user-group' do
|
|
|
40
40
|
)
|
|
41
41
|
defaults.stubs(:write_to_file).returns(true)
|
|
42
42
|
defaults.stubs(:providers).returns(providers)
|
|
43
|
+
api_expects(:users, :index, 'Find user').with_params(search: 'login=admin').returns(index_response([{ 'default_organization' => { 'id' => 2 } }]))
|
|
44
|
+
api_expects(:users, :index, 'Find user').with_params(search: 'login=admin').returns(index_response([{ 'default_location' => { 'id' => 1 } }]))
|
|
43
45
|
api_expects(:usergroups, :index, 'List user groups').returns(@user_groups)
|
|
44
46
|
|
|
45
47
|
result = run_cmd(@cmd, { use_defaults: true, defaults: defaults })
|
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'] || '
|
|
20
|
+
FOREMAN_VERSION = ENV['TEST_API_VERSION'] || '3.1'
|
|
21
21
|
unless Dir.entries('test/data').include? FOREMAN_VERSION
|
|
22
22
|
raise StandardError.new "Version is not correct"
|
|
23
23
|
end
|