hammer_cli_foreman 2.5.1 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. checksums.yaml +4 -4
  2. data/doc/release_notes.md +31 -1
  3. data/lib/hammer_cli_foreman/architecture.rb +5 -5
  4. data/lib/hammer_cli_foreman/associating_commands.rb +0 -24
  5. data/lib/hammer_cli_foreman/bookmark.rb +5 -5
  6. data/lib/hammer_cli_foreman/combination.rb +3 -13
  7. data/lib/hammer_cli_foreman/command_extensions/domain.rb +20 -0
  8. data/lib/hammer_cli_foreman/command_extensions/subnet.rb +25 -10
  9. data/lib/hammer_cli_foreman/command_extensions/user.rb +9 -5
  10. data/lib/hammer_cli_foreman/command_extensions.rb +1 -2
  11. data/lib/hammer_cli_foreman/commands.rb +3 -11
  12. data/lib/hammer_cli_foreman/compute_attribute.rb +1 -1
  13. data/lib/hammer_cli_foreman/compute_profile.rb +5 -5
  14. data/lib/hammer_cli_foreman/compute_resource/libvirt.rb +4 -2
  15. data/lib/hammer_cli_foreman/compute_resource/vmware.rb +4 -2
  16. data/lib/hammer_cli_foreman/compute_resource.rb +1 -0
  17. data/lib/hammer_cli_foreman/domain.rb +5 -28
  18. data/lib/hammer_cli_foreman/filter.rb +3 -3
  19. data/lib/hammer_cli_foreman/host.rb +1 -35
  20. data/lib/hammer_cli_foreman/hostgroup.rb +14 -58
  21. data/lib/hammer_cli_foreman/hosts/common_update_options.rb +8 -30
  22. data/lib/hammer_cli_foreman/id_resolver.rb +7 -68
  23. data/lib/hammer_cli_foreman/location.rb +0 -6
  24. data/lib/hammer_cli_foreman/mail_notification.rb +2 -2
  25. data/lib/hammer_cli_foreman/model.rb +5 -5
  26. data/lib/hammer_cli_foreman/operating_system.rb +10 -10
  27. data/lib/hammer_cli_foreman/option_builders.rb +65 -53
  28. data/lib/hammer_cli_foreman/option_sources/id_params.rb +41 -11
  29. data/lib/hammer_cli_foreman/option_sources/ids_params.rb +39 -7
  30. data/lib/hammer_cli_foreman/option_sources.rb +0 -1
  31. data/lib/hammer_cli_foreman/organization.rb +0 -6
  32. data/lib/hammer_cli_foreman/references.rb +0 -16
  33. data/lib/hammer_cli_foreman/settings.rb +3 -3
  34. data/lib/hammer_cli_foreman/smart_proxy.rb +7 -57
  35. data/lib/hammer_cli_foreman/template.rb +3 -15
  36. data/lib/hammer_cli_foreman/user.rb +5 -4
  37. data/lib/hammer_cli_foreman/usergroup.rb +5 -5
  38. data/lib/hammer_cli_foreman/version.rb +1 -1
  39. data/lib/hammer_cli_foreman.rb +0 -21
  40. data/lib/minitest/coverage_reporter.rb +1 -1
  41. data/locale/ca/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  42. data/locale/de/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  43. data/locale/en/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  44. data/locale/en_GB/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  45. data/locale/es/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  46. data/locale/fr/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  47. data/locale/it/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  48. data/locale/ja/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  49. data/locale/ko/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  50. data/locale/pt_BR/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  51. data/locale/ru/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  52. data/locale/zh_CN/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  53. data/locale/zh_TW/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  54. data/test/data/3.1/foreman_api.json +1 -0
  55. data/test/functional/architecture_test.rb +6 -4
  56. data/test/functional/bookmark_test.rb +3 -1
  57. data/test/functional/compute_attribute_test.rb +20 -20
  58. data/test/functional/compute_profile_test.rb +3 -1
  59. data/test/functional/domain/create_test.rb +91 -0
  60. data/test/functional/domain/update_test.rb +90 -0
  61. data/test/functional/host_test.rb +34 -1
  62. data/test/functional/hostgroup/create_test.rb +11 -117
  63. data/test/functional/hostgroup/update_test.rb +11 -79
  64. data/test/functional/location_test.rb +0 -3
  65. data/test/functional/mail_notification_test.rb +3 -1
  66. data/test/functional/model_test.rb +3 -1
  67. data/test/functional/operating_system_test.rb +3 -1
  68. data/test/functional/personal_access_token_test.rb +4 -4
  69. data/test/functional/settings_test.rb +4 -4
  70. data/test/functional/template_test.rb +76 -49
  71. data/test/functional/user_mail_notification_test.rb +3 -3
  72. data/test/functional/usergroup_test.rb +3 -1
  73. data/test/test_helper.rb +1 -1
  74. data/test/unit/apipie_resource_mock.rb +1 -39
  75. data/test/unit/architecture_test.rb +10 -10
  76. data/test/unit/bookmark_test.rb +10 -14
  77. data/test/unit/commands_test.rb +1 -2
  78. data/test/unit/compute_profile_test.rb +10 -10
  79. data/test/unit/helpers/command.rb +0 -8
  80. data/test/unit/host_test.rb +14 -61
  81. data/test/unit/hostgroup_test.rb +7 -26
  82. data/test/unit/id_resolver_test.rb +0 -28
  83. data/test/unit/mail_notification_test.rb +4 -4
  84. data/test/unit/model_test.rb +47 -47
  85. data/test/unit/operating_system_test.rb +10 -16
  86. data/test/unit/option_builders_test.rb +88 -83
  87. data/test/unit/settings_test.rb +4 -4
  88. data/test/unit/smart_proxy_test.rb +0 -12
  89. data/test/unit/usergroup_test.rb +10 -10
  90. metadata +70 -84
  91. data/lib/hammer_cli_foreman/command_extensions/puppet_environment.rb +0 -29
  92. data/lib/hammer_cli_foreman/command_extensions/puppet_environments.rb +0 -29
  93. data/lib/hammer_cli_foreman/config_group.rb +0 -45
  94. data/lib/hammer_cli_foreman/option_sources/puppet_environment_params.rb +0 -59
  95. data/lib/hammer_cli_foreman/puppet_class.rb +0 -61
  96. data/lib/hammer_cli_foreman/puppet_environment.rb +0 -65
  97. data/lib/hammer_cli_foreman/smart_class_parameter.rb +0 -189
  98. data/test/functional/config_group_test.rb +0 -50
  99. data/test/functional/proxy_test.rb +0 -86
  100. data/test/functional/smart_class_parameter_test.rb +0 -97
  101. data/test/unit/config_group_test.rb +0 -82
  102. data/test/unit/puppet_class_test.rb +0 -72
  103. data/test/unit/puppet_environment_test.rb +0 -114
  104. 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 &&
@@ -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:',
@@ -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.1')) }
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 })
@@ -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.1')) }
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.1')) }
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(
@@ -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.1')) }
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(:settings, :index, 'List').with_params(
49
- 'page' => 1, 'per_page' => 1000
50
- ).returns(index_response([setting]))
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
@@ -99,7 +98,6 @@ describe 'template' do
99
98
  it 'updates nothing without template related parameters' do
100
99
  params = %w[--id=1 --organization-id=1 --location-id=1]
101
100
 
102
- api_expects(:template_kinds, :index, 'Get list of template kinds').returns(index_response([]))
103
101
  api_expects(:provisioning_templates, :update, 'Update template with no params').returns({})
104
102
 
105
103
  expected_result = success_result("Nothing to update.\n")
@@ -107,6 +105,48 @@ describe 'template' do
107
105
  result = run_cmd(@cmd + params)
108
106
  assert_cmd(expected_result, result)
109
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
110
150
  end
111
151
 
112
152
  describe 'create' do
@@ -120,65 +160,53 @@ describe 'template' do
120
160
  expected_result = CommandExpectation.new
121
161
  expected_result.expected_err =
122
162
  ['Could not create the provisioning template:',
123
- " Error: unknown template kind",
124
- ' ',
125
- " See: 'hammer template create --help'.",
163
+ ' Error: template_kind not found.',
126
164
  ''].join("\n")
127
- expected_result.expected_exit_code = HammerCLI::EX_USAGE
165
+ expected_result.expected_exit_code = HammerCLI::EX_SOFTWARE
128
166
 
129
- HammerCLIForeman::Template::CreateCommand.any_instance.stubs(:kinds).returns(["PXELinux"])
130
-
131
- api_expects_no_call
167
+ api_expects_search(:template_kinds, name: 'unknown').returns(
168
+ index_response([])
169
+ )
132
170
 
133
171
  result = run_cmd(@cmd + params)
134
172
  assert_cmd(expected_result, result)
135
173
  end
136
- end
137
174
 
138
- describe 'combinations' do
139
- before do
140
- @cmd = %w(template combination)
141
- end
175
+ it 'should create a template' do
176
+ params = ['--name=tpl', '--file=Gemfile', '--type=provision']
142
177
 
143
- it 'should create new combination with warning' do
144
- params = ['create','--provisioning-template-id=10', '--hostgroup-id=1', '--environment-id=1']
145
- expected_result = success_result("Template combination created.\n")
146
- expected_result.expected_err = "Warning: Option --environment-id is deprecated. Use --puppet-environment[-id] instead\n"
147
- api_expects(:template_combinations, :create, 'Create template combination') do |params|
148
- params['provisioning_template_id'] == 10 &&
149
- params['hostgroup_id'] == 1 &&
150
- params['environment_id'] == 1 &&
151
- params['template_combination'] == {'environment_id' => 1, 'hostgroup_id' => 1}
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'
152
191
  end
153
192
 
154
193
  result = run_cmd(@cmd + params)
155
194
  assert_cmd(expected_result, result)
156
195
  end
196
+ end
197
+
198
+ describe 'combinations' do
199
+ before do
200
+ @cmd = %w(template combination)
201
+ end
157
202
 
158
203
  it 'should create new combination' do
159
- params = ['create','--provisioning-template-id=10', '--hostgroup-id=1', '--puppet-environment-id=1']
204
+ params = ['create','--provisioning-template-id=10', '--hostgroup-id=1']
160
205
  expected_result = success_result("Template combination created.\n")
161
206
  api_expects(:template_combinations, :create, 'Create template combination') do |params|
162
- params['provisioning_template_id'] == 10 &&
163
- params['hostgroup_id'] == 1 &&
164
- params['environment_id'] == 1 &&
165
- params['template_combination'] == {'environment_id' => 1, 'hostgroup_id' => 1}
166
- end
167
-
168
- result = run_cmd(@cmd + params)
169
- assert_cmd(expected_result, result)
170
- end
171
-
172
- it 'should update combination with warning' do
173
- params = ['update', '--id=3', '--provisioning-template-id=10', '--hostgroup-id=1', '--environment-id=1']
174
- expected_result = success_result("Template combination updated.\n")
175
- expected_result.expected_err = "Warning: Option --environment-id is deprecated. Use --puppet-environment[-id] instead\n"
176
- api_expects(:template_combinations, :update, 'Update template combination') do |params|
177
- params['id'] == '3' &&
178
- params['provisioning_template_id'] == 10 &&
179
- params['hostgroup_id'] == 1 &&
180
- params['environment_id'] == 1 &&
181
- 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' }
182
210
  end
183
211
 
184
212
  result = run_cmd(@cmd + params)
@@ -186,14 +214,13 @@ describe 'template' do
186
214
  end
187
215
 
188
216
  it 'should update combination' do
189
- params = ['update', '--id=3', '--provisioning-template-id=10', '--hostgroup-id=1', '--puppet-environment-id=1']
217
+ params = ['update', '--id=3', '--provisioning-template-id=10', '--hostgroup-id=1']
190
218
  expected_result = success_result("Template combination updated.\n")
191
219
  api_expects(:template_combinations, :update, 'Update template combination') do |params|
192
220
  params['id'] == '3' &&
193
- params['provisioning_template_id'] == 10 &&
194
- params['hostgroup_id'] == 1 &&
195
- params['environment_id'] == 1 &&
196
- 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' }
197
224
  end
198
225
 
199
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
- @cmd,
59
- "Could not find mail_notification, please set one of options --mail-notification, --mail-notification-id.",
60
- "Could not add user mail notification"
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)
@@ -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.1')) }
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'] || '2.5'
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
@@ -19,15 +19,6 @@ module ResourceMocks
19
19
  end
20
20
  end
21
21
 
22
- def self.smart_class_parameters_index
23
- ResourceMocks.mock_action_call(:smart_class_parameters, :index,
24
- { "results" => [ { 'parameter' => 'config', 'id' => '1'} ] })
25
- end
26
-
27
- def self.smart_class_parameters_show
28
- ResourceMocks.mock_action_call(:smart_class_parameters, :show, { 'smart_class_parameter' => { 'override_value_order' => '', 'environments' => [] }})
29
- end
30
-
31
22
  def self.smart_variables_index
32
23
  ResourceMocks.mock_action_call(:smart_variables, :index,
33
24
  { "results" => [ { 'variable' => 'var', 'id' => '1'} ] })
@@ -107,8 +98,6 @@ module ResourceMocks
107
98
  ResourceMocks.mock_action_call(:hosts, :show, {
108
99
  "ip" => "192.168.122.51",
109
100
  "ip6" => nil,
110
- "environment_id" => 1,
111
- "environment_name" => "production",
112
101
  "last_report" => "2016-10-24 12:06:31 UTC",
113
102
  "mac" => "52:54:00:ce:b2:b9",
114
103
  "realm_id" => nil,
@@ -150,26 +139,11 @@ module ResourceMocks
150
139
  "organization_name" => nil,
151
140
  "location_id" => nil,
152
141
  "location_name" => nil,
153
- "puppet_status" => 0,
154
142
  "model_name" => "KVM",
155
143
  "configuration_status" => 0,
156
144
  "configuration_status_label" => "No reports",
157
145
  "name" => "foreman.example.com",
158
146
  "id" => 1,
159
- "puppet_proxy_id" => 1,
160
- "puppet_proxy_name" => "foreman.example.com",
161
- "puppet_ca_proxy_id" => 1,
162
- "puppet_ca_proxy_name" => "foreman.example.com",
163
- "puppet_proxy" => {
164
- "name" => "foreman.example.com",
165
- "id" => 1,
166
- "url" => "https://foreman.example.com:9090"
167
- },
168
- "puppet_ca_proxy" => {
169
- "name" => "foreman.example.com",
170
- "id" => 1,
171
- "url" => "https://foreman.example.com:9090"
172
- },
173
147
  "hostgroup_name" => nil,
174
148
  "hostgroup_title" => nil,
175
149
  "parameters" => [],
@@ -193,10 +167,7 @@ module ResourceMocks
193
167
  "primary" => false,
194
168
  "provision" => false,
195
169
  "type" => "interface"
196
- }],
197
- "puppetclasses" => [],
198
- "config_groups" => [],
199
- "all_puppetclasses" => []
170
+ }]
200
171
  })
201
172
  end
202
173
 
@@ -335,13 +306,4 @@ module ResourceMocks
335
306
  "value" => "random value",
336
307
  }])
337
308
  end
338
-
339
- def self.config_groups_index
340
- ResourceMocks.mock_action_call(:config_groups, :index, [{
341
- id: 15,
342
- name: "test config group",
343
- puppetclasses: [ { name: "My puppetclass" } ]
344
- }])
345
- end
346
-
347
309
  end
@@ -17,8 +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
+ it_should_accept 'organization', ['--organization-id=1']
21
+ it_should_accept 'location', ['--location-id=1']
22
22
  end
23
23
 
24
24
  context "output" do
@@ -39,8 +39,8 @@ describe HammerCLIForeman::Architecture do
39
39
  context "parameters" do
40
40
  it_should_accept "id", ["--id=1"]
41
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']
42
+ it_should_accept 'organization', %w[--id=1 --organization-id=1]
43
+ it_should_accept 'location', %w[--id=1 --location-id=1]
44
44
  # it_should_fail_with "no arguments" # TODO: temporarily disabled, parameters are checked in the id resolver
45
45
  end
46
46
 
@@ -61,8 +61,8 @@ describe HammerCLIForeman::Architecture do
61
61
 
62
62
  context "parameters" do
63
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']
64
+ it_should_accept 'organization', %w[--name=arch --organization-id=1]
65
+ it_should_accept 'location', %w[--name=arch --location-id=1]
66
66
  # it_should_fail_with "name missing", []
67
67
  # TODO: temporarily disabled, parameters are checked in the api
68
68
  end
@@ -77,8 +77,8 @@ describe HammerCLIForeman::Architecture do
77
77
  context "parameters" do
78
78
  it_should_accept "name", ["--name=arch"]
79
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']
80
+ it_should_accept 'organization', %w[--id=1 --organization-id=1]
81
+ it_should_accept 'location', %w[--id=1 --location-id=1]
82
82
  # it_should_fail_with "name or id missing", [] # TODO: temporarily disabled, parameters are checked in the id resolver
83
83
  end
84
84
 
@@ -92,8 +92,8 @@ describe HammerCLIForeman::Architecture do
92
92
  context "parameters" do
93
93
  it_should_accept "name", ["--name=arch", "--new-name=arch2"]
94
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']
95
+ it_should_accept 'organization', %w[--id=1 --new-name=arch2 --organization-id=1]
96
+ it_should_accept 'location', %w[--id=1 --new-name=arch2 --location-id=1]
97
97
  # it_should_fail_with "no params", [] # TODO: temporarily disabled, parameters are checked in the id resolver
98
98
  # it_should_fail_with "name or id missing", ["--new-name=arch2"] # TODO: temporarily disabled, parameters are checked in the id resolver
99
99
  end