hammer_cli_foreman 0.16.0 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. checksums.yaml +5 -5
  2. data/doc/release_notes.md +13 -0
  3. data/lib/hammer_cli_foreman.rb +4 -0
  4. data/lib/hammer_cli_foreman/common_parameter.rb +4 -0
  5. data/lib/hammer_cli_foreman/compute_attribute.rb +318 -0
  6. data/lib/hammer_cli_foreman/compute_profile.rb +61 -0
  7. data/lib/hammer_cli_foreman/compute_resource.rb +29 -13
  8. data/lib/hammer_cli_foreman/compute_resource/base.rb +12 -0
  9. data/lib/hammer_cli_foreman/compute_resource/ec2.rb +24 -0
  10. data/lib/hammer_cli_foreman/compute_resource/gce.rb +23 -0
  11. data/lib/hammer_cli_foreman/compute_resource/help_utils.rb +34 -0
  12. data/lib/hammer_cli_foreman/compute_resource/libvirt.rb +49 -0
  13. data/lib/hammer_cli_foreman/compute_resource/openstack.rb +25 -0
  14. data/lib/hammer_cli_foreman/compute_resource/ovirt.rb +47 -0
  15. data/lib/hammer_cli_foreman/compute_resource/rackspace.rb +22 -0
  16. data/lib/hammer_cli_foreman/compute_resource/register_compute_resources.rb +20 -0
  17. data/lib/hammer_cli_foreman/compute_resource/vmware.rb +68 -0
  18. data/lib/hammer_cli_foreman/host.rb +4 -11
  19. data/lib/hammer_cli_foreman/hostgroup.rb +9 -0
  20. data/lib/hammer_cli_foreman/hosts/common_update_help.rb +1 -7
  21. data/lib/hammer_cli_foreman/hosts/common_update_options.rb +1 -1
  22. data/lib/hammer_cli_foreman/id_resolver.rb +3 -1
  23. data/lib/hammer_cli_foreman/parameter.rb +7 -0
  24. data/lib/hammer_cli_foreman/references.rb +8 -0
  25. data/lib/hammer_cli_foreman/report_template.rb +79 -0
  26. data/lib/hammer_cli_foreman/smart_variable.rb +1 -2
  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/1.21/foreman_api.json +1 -0
  42. data/test/data/1.22/foreman_api.json +1 -0
  43. data/test/functional/compute_attribute_test.rb +654 -0
  44. data/test/functional/compute_profile_test.rb +99 -0
  45. data/test/functional/compute_resource_test.rb +42 -18
  46. data/test/functional/location_test.rb +6 -5
  47. data/test/functional/organization_test.rb +6 -5
  48. data/test/functional/report_template_test.rb +107 -7
  49. data/test/test_helper.rb +1 -1
  50. data/test/unit/common_parameter_test.rb +17 -5
  51. data/test/unit/domain_test.rb +2 -0
  52. data/test/unit/host_test.rb +1 -0
  53. data/test/unit/hostgroup_test.rb +14 -1
  54. data/test/unit/operating_system_test.rb +1 -0
  55. metadata +25 -20
  56. data/lib/hammer_cli_foreman/compute_resources/all.rb +0 -7
  57. data/lib/hammer_cli_foreman/compute_resources/ec2.rb +0 -9
  58. data/lib/hammer_cli_foreman/compute_resources/ec2/host_help_extenstion.rb +0 -23
  59. data/lib/hammer_cli_foreman/compute_resources/gce.rb +0 -9
  60. data/lib/hammer_cli_foreman/compute_resources/gce/host_help_extenstion.rb +0 -22
  61. data/lib/hammer_cli_foreman/compute_resources/libvirt.rb +0 -9
  62. data/lib/hammer_cli_foreman/compute_resources/libvirt/host_help_extenstion.rb +0 -35
  63. data/lib/hammer_cli_foreman/compute_resources/openstack.rb +0 -9
  64. data/lib/hammer_cli_foreman/compute_resources/openstack/host_help_extenstion.rb +0 -23
  65. data/lib/hammer_cli_foreman/compute_resources/ovirt.rb +0 -9
  66. data/lib/hammer_cli_foreman/compute_resources/ovirt/host_help_extenstion.rb +0 -36
  67. data/lib/hammer_cli_foreman/compute_resources/rackspace.rb +0 -9
  68. data/lib/hammer_cli_foreman/compute_resources/rackspace/host_help_extenstion.rb +0 -20
  69. data/lib/hammer_cli_foreman/compute_resources/vmware.rb +0 -9
  70. data/lib/hammer_cli_foreman/compute_resources/vmware/host_help_extenstion.rb +0 -66
@@ -0,0 +1,99 @@
1
+ require File.join(File.dirname(__FILE__), 'test_helper')
2
+ describe "parameters" do
3
+
4
+ describe "create compute profile" do
5
+ before do
6
+ @cmd = ["compute-profile", "create"]
7
+ end
8
+ it 'should create a compute-profile' do
9
+ params = ['--name=newProfile']
10
+ api_expects(:compute_profiles, :create, 'Create Compute Profile') do |params|
11
+ (params['compute_profile']['name'] == 'newProfile')
12
+ end
13
+ result = run_cmd(@cmd + params)
14
+ assert_cmd(success_result("Compute profile created.\n"), result)
15
+ end
16
+ end
17
+
18
+ describe "update compute profile" do
19
+ before do
20
+ @cmd = ["compute-profile","update"]
21
+ @compute_profile =
22
+ {
23
+ "id": 1,
24
+ "name": "profile2",
25
+ "compute_attributes": [{
26
+ "id": 2,
27
+ "compute_resource_id": 3,
28
+ "compute_resource_name": "bla",
29
+ "provider_friendly_name": "oVirt",
30
+ "compute_profile_id": 1,
31
+ "compute_profile_name": "profile2",
32
+ }]
33
+ }
34
+ end
35
+ it 'update compute profile name' do
36
+ params = ['--id=1' ,'--new-name=profile2']
37
+ api_expects(:compute_profiles, :update, 'Update the compute profile').with_params({"name" =>"profile2"}).returns(@compute_profile)
38
+ result = run_cmd(@cmd + params)
39
+ assert_cmd(success_result("Compute profile updated.\n"), result)
40
+ end
41
+ end
42
+
43
+ describe "delete compute profile" do
44
+ before do
45
+ @cmd = ["compute-profile","delete"]
46
+ @compute_profile =
47
+ {
48
+ "id": 3,
49
+ "name": "profile3",
50
+ "compute_attributes": [{
51
+ "id": 4,
52
+ "compute_resource_id": 3,
53
+ "compute_resource_name": "bla",
54
+ "provider_friendly_name": "oVirt",
55
+ "compute_profile_id": 3,
56
+ "compute_profile_name": "profile3",
57
+ }]
58
+ }
59
+ end
60
+ it 'delete compute profile' do
61
+ params = ['--id=3']
62
+ api_expects(:compute_profiles, :destroy, :id => 3).returns({})
63
+ result = run_cmd(@cmd + params)
64
+ assert_cmd(success_result("Compute profile deleted.\n"), result)
65
+ end
66
+
67
+
68
+ it "should print error on missing --name or --id" do
69
+ params = []
70
+
71
+ expected_result = usage_error_result(
72
+ @cmd,
73
+ "At least one of options --name, --id is required.",
74
+ "Could not delete the Compute profile"
75
+ )
76
+
77
+ api_expects_no_call
78
+ result = run_cmd(@cmd + params)
79
+ assert_cmd(expected_result, result)
80
+ end
81
+
82
+ it "should print error when the compute profile doesn't exist" do
83
+ params = ['--id=200']
84
+
85
+ expected_result = not_found_error_result(
86
+ @cmd,
87
+ "Resource compute_profile not found by id '200'",
88
+ "Could not delete the Compute profile"
89
+ )
90
+ expected_message = "{ \"error\": {\"message\": \"Error: Resource compute_profile not found by id '200'\" }}"
91
+ response = HammerCLIForeman.foreman_api.api.send(:create_fake_response, 404,
92
+ expected_message, "GET", "http://example.com/", {})
93
+ api_expects(:compute_profiles, :destroy, :id => 3).raises(RestClient::NotFound, response)
94
+ result = run_cmd(@cmd + params)
95
+ assert_cmd(expected_result, result)
96
+ end
97
+ end
98
+
99
+ end
@@ -39,10 +39,9 @@ describe 'compute-resource' do
39
39
  end
40
40
 
41
41
  it 'should print error for incorrect/invalid --provider option' do
42
- params = %w(--provider=unknown)
43
-
42
+ params = %w(--provider=unknown --name=new)
44
43
  expected_result = CommandExpectation.new
45
- expected_result.expected_err = options_missing_error
44
+ expected_result.expected_err = "Could not create the compute resource:\n incorrect/invalid --provider option\n"
46
45
  expected_result.expected_exit_code = HammerCLI::EX_USAGE
47
46
 
48
47
  api_expects_no_call
@@ -53,12 +52,10 @@ describe 'compute-resource' do
53
52
  end
54
53
 
55
54
  it 'should print error for blank --provider option' do
56
- params = %w(--provider='')
57
-
55
+ params = %w(--provider= --name=new'')
58
56
  expected_result = CommandExpectation.new
59
- expected_result.expected_err = options_missing_error
57
+ expected_result.expected_err = "Could not create the compute resource:\n incorrect/invalid --provider option\n"
60
58
  expected_result.expected_exit_code = HammerCLI::EX_USAGE
61
-
62
59
  api_expects_no_call
63
60
 
64
61
  result = run_cmd(@cmd + params)
@@ -88,12 +85,12 @@ describe 'compute-resource' do
88
85
  end
89
86
 
90
87
  it 'should create a compute-resource' do
91
- params = %w(--name=my-libvirt --provider=LibVirt --url=qemu+ssh://root@test.foreman.com")
88
+ params = %w(--name=my-libvirt --provider=LibVirt --url=qemu+ssh://root@test.foreman.com)
92
89
 
93
90
  api_expects(:compute_resources, :create, 'Create Compute Resource') do |params|
94
- (params['compute_resource']['name'] = 'libvirt') &&
95
- (params['compute_resource']['provider'] = 'libvirt') &&
96
- (params['compute_resource']['url'] = 'qemu+ssh://root@test.foreman.com')
91
+ (params['compute_resource']['name'] == 'my-libvirt') &&
92
+ (params['compute_resource']['provider'] == 'LibVirt') &&
93
+ (params['compute_resource']['url'] == 'qemu+ssh://root@test.foreman.com')
97
94
  end
98
95
 
99
96
  result = run_cmd(@cmd + params)
@@ -110,19 +107,46 @@ describe 'compute-resource' do
110
107
  --datacenter=ovirt.example.com)
111
108
 
112
109
  api_expects(:compute_resources, :create, 'Create Compute Resource') do |params|
113
- (params['compute_resource']['name'] = 'test-ovirt') &&
114
- (params['compute_resource']['provider'] = 'ovirt') &&
115
- (params['compute_resource']['url'] = 'https://ovirt.example.com/ovirt-engine/api') &&
116
- (params['compute_resource']['user'] = 'foreman') &&
117
- (params['compute_resource']['password'] = 'changeme') &&
118
- (params['compute_resource']['datacenter'] = 'ovirt.example.com')
110
+ (params['compute_resource']['name'] == 'test-ovirt') &&
111
+ (params['compute_resource']['provider'] == 'ovirt') &&
112
+ (params['compute_resource']['url'] == 'https://ovirt.example.com/ovirt-engine/api') &&
113
+ (params['compute_resource']['user'] == 'foreman') &&
114
+ (params['compute_resource']['password'] == 'changeme') &&
115
+ (params['compute_resource']['datacenter'] == 'ovirt.example.com')
119
116
  end
120
117
 
121
118
  result = run_cmd(@cmd + params)
122
119
 
123
120
  assert_cmd(success_result("Compute resource created.\n"), result)
124
121
  end
125
- end
122
+
123
+
124
+ it 'should create a compute-resource ovirt with custom public key' do
125
+ tempfile = Tempfile.new('ca.pem')
126
+ tempfile << 'test data'
127
+ tempfile.close
128
+ params = %W(--name=test-ovirt
129
+ --provider=ovirt
130
+ --url=https://ovirt.example.com/ovirt-engine/api
131
+ --user=foreman
132
+ --password=changeme
133
+ --datacenter=ovirt.example.com
134
+ --public-key-path=#{tempfile.path})
135
+
136
+ api_expects(:compute_resources, :create, 'Create Compute Resource') do |params|
137
+ (params['compute_resource']['name'] =='test-ovirt') &&
138
+ (params['compute_resource']['provider'] == 'ovirt') &&
139
+ (params['compute_resource']['url'] == 'https://ovirt.example.com/ovirt-engine/api') &&
140
+ (params['compute_resource']['user'] == 'foreman') &&
141
+ (params['compute_resource']['password'] == 'changeme') &&
142
+ (params['compute_resource']['datacenter'] == 'ovirt.example.com' &&
143
+ (params['compute_resource']['public_key'] == 'test data'))
144
+ end
145
+ result = run_cmd(@cmd + params)
146
+
147
+ assert_cmd(success_result("Compute resource created.\n"), result)
148
+ end
149
+ end
126
150
 
127
151
  describe 'clusters' do
128
152
  let(:cmd) { base_cmd << 'clusters' }
@@ -48,16 +48,16 @@ describe "parameters" do
48
48
  assert_cmd(expected_result, result)
49
49
  end
50
50
 
51
-
52
51
  it "should create new parameter" do
53
- params = ['--name=A', '--value=1', '--location-id=3']
52
+ params = ['--name=A', '--value=1', '--parameter-type=integer', '--location-id=3']
54
53
 
55
54
  api_expects(:parameters, :index, 'Attempt find parameters') do |par|
56
55
  par['location_id'].to_i == 3
57
56
  end.returns(index_response([]))
58
57
  api_expects(:parameters, :create, 'Create parameter') do |par|
59
58
  par['parameter']['name'] == 'A' &&
60
- par['parameter']['value'] == '1'
59
+ par['parameter']['value'] == '1' &&
60
+ par['parameter']['parameter_type'] == 'integer'
61
61
  end.returns({:name => 'A', :value => '1'})
62
62
 
63
63
  result = run_cmd(@cmd + params)
@@ -66,7 +66,7 @@ describe "parameters" do
66
66
 
67
67
 
68
68
  it "should update existing parameter" do
69
- params = ['--name=A', '--value=1', '--location-id=3']
69
+ params = ['--name=A', '--value=1', '--parameter-type=integer', '--location-id=3']
70
70
 
71
71
  api_expects(:parameters, :index, 'Find parameter') do |par|
72
72
  par['location_id'].to_i == 3
@@ -74,7 +74,8 @@ describe "parameters" do
74
74
  api_expects(:parameters, :update, 'Update parameter') do |par|
75
75
  par['id'].to_i == 15 &&
76
76
  par['location_id'].to_i == 3 &&
77
- par['parameter']['value'] == '1'
77
+ par['parameter']['value'] == '1' &&
78
+ par['parameter']['parameter_type'] == 'integer'
78
79
  end.returns({:name => 'A', :value => '1'})
79
80
 
80
81
  result = run_cmd(@cmd + params)
@@ -48,16 +48,16 @@ describe "parameters" do
48
48
  assert_cmd(expected_result, result)
49
49
  end
50
50
 
51
-
52
51
  it "should create new parameter" do
53
- params = ['--name=A', '--value=1', '--organization-id=3']
52
+ params = ['--name=A', '--value=1', '--parameter-type=integer', '--organization-id=3']
54
53
 
55
54
  api_expects(:parameters, :index, 'Attempt find parameters') do |par|
56
55
  par['organization_id'].to_i == 3
57
56
  end.returns(index_response([]))
58
57
  api_expects(:parameters, :create, 'Create parameter') do |par|
59
58
  par['parameter']['name'] == 'A' &&
60
- par['parameter']['value'] == '1'
59
+ par['parameter']['value'] == '1' &&
60
+ par['parameter']['parameter_type'] == 'integer'
61
61
  end.returns({:name => 'A', :value => '1'})
62
62
 
63
63
  result = run_cmd(@cmd + params)
@@ -66,7 +66,7 @@ describe "parameters" do
66
66
 
67
67
 
68
68
  it "should update existing parameter" do
69
- params = ['--name=A', '--value=1', '--organization-id=3']
69
+ params = ['--name=A', '--value=1', '--parameter-type=integer', '--organization-id=3']
70
70
 
71
71
  api_expects(:parameters, :index, 'Find parameter') do |par|
72
72
  par['organization_id'].to_i == 3
@@ -74,7 +74,8 @@ describe "parameters" do
74
74
  api_expects(:parameters, :update, 'Update parameter') do |par|
75
75
  par['id'].to_i == 15 &&
76
76
  par['organization_id'].to_i == 3 &&
77
- par['parameter']['value'] == '1'
77
+ par['parameter']['value'] == '1' &&
78
+ par['parameter']['parameter_type'] == 'integer'
78
79
  end.returns({:name => 'A', :value => '1'})
79
80
 
80
81
  result = run_cmd(@cmd + params)
@@ -219,17 +219,25 @@ describe 'report-template' do
219
219
  end
220
220
  end
221
221
 
222
+ let(:generated_report_response) do
223
+ response = mock('ReportResponse')
224
+ response.stubs(:code).returns(200)
225
+ response.stubs(:body).returns('Report')
226
+ response.stubs(:headers).returns({:content_disposition => "filename=\"#{File.basename(tempfile.path)}\""})
227
+ response
228
+ end
229
+ let(:report_not_ready_response) do
230
+ mock('NoDataResponse', code: 204)
231
+ end
232
+
222
233
  describe 'generate' do
223
234
  let(:cmd) { %w(report-template generate) }
224
235
  let(:tempfile) { Tempfile.new('template', '/tmp') }
225
236
 
226
237
  it 'generates the report to the file' do
227
238
  params = ['--id=3', '--path=/tmp', '--inputs=Host filter=filter']
228
- response = mock()
229
- response.stubs(:body).returns('Report')
230
- response.stubs(:headers).returns({:content_disposition => "filename=\"#{File.basename(tempfile.path)}\""})
231
239
  api_expects(:report_templates, :generate, 'Generate').with_params(
232
- 'id' => '3', "input_values" => {"Host filter" => "filter"}).returns(response)
240
+ 'id' => '3', "input_values" => {"Host filter" => "filter"}).returns(generated_report_response)
233
241
 
234
242
  output = OutputMatcher.new("The response has been saved to #{tempfile.path}")
235
243
  expected_result = success_result(output)
@@ -240,10 +248,8 @@ describe 'report-template' do
240
248
 
241
249
  it 'generates the report to stdout' do
242
250
  params = ['--id=3', '--inputs=Host filter=filter']
243
- response = mock()
244
- response.stubs(:body).returns('Report')
245
251
  api_expects(:report_templates, :generate, 'Generate').with_params(
246
- 'id' => '3', "input_values" => {"Host filter" => "filter"}).returns(response)
252
+ 'id' => '3', "input_values" => {"Host filter" => "filter"}).returns(generated_report_response)
247
253
 
248
254
  output = OutputMatcher.new('Report')
249
255
  expected_result = success_result(output)
@@ -251,4 +257,98 @@ describe 'report-template' do
251
257
  assert_cmd(expected_result, result)
252
258
  end
253
259
  end
260
+
261
+ describe 'schedule' do
262
+ let(:cmd) { %w(report-template schedule) }
263
+ let(:tempfile) { Tempfile.new('template', '/tmp') }
264
+
265
+ let(:schedule_response) do
266
+ job_id = 'JOB-UNIQUE-ID'
267
+ { 'job_id' => job_id, 'data_url' => "/report_data/#{job_id}" }
268
+ end
269
+
270
+ context 'without --wait' do
271
+ it 'schedule report and prints out data for getting the result' do
272
+ params = ['--id=3', '--inputs=Host filter=filter']
273
+ api_expects(:report_templates, :schedule_report, 'Schedule').with_params(
274
+ 'id' => '3', "input_values" => {"Host filter" => "filter"}).returns(schedule_response)
275
+
276
+ output = OutputMatcher.new(schedule_response['job_id'])
277
+ expected_result = success_result(output)
278
+ result = run_cmd(cmd + params)
279
+ assert_cmd(expected_result, result)
280
+ end
281
+ end
282
+
283
+ context 'with --wait' do
284
+ it 'generates the report to the file' do
285
+ params = ['--id=3', '--inputs=Host filter=filter', '--wait', '--path=/tmp']
286
+ api_expects(:report_templates, :schedule_report, 'Schedule').with_params(
287
+ 'id' => '3', "input_values" => {"Host filter" => "filter"}).returns(schedule_response)
288
+ api_expects(:report_templates, :report_data, 'Download report').with_params(
289
+ 'id' => '3', 'job_id' => 'JOB-UNIQUE-ID').returns(generated_report_response)
290
+
291
+ output = OutputMatcher.new("The response has been saved to #{tempfile.path}")
292
+ expected_result = success_result(output)
293
+ result = run_cmd(cmd + params)
294
+ assert_cmd(expected_result, result)
295
+ assert_equal('Report', tempfile.read)
296
+ end
297
+
298
+ it 'generates the report to stdout' do
299
+ params = ['--id=3', '--inputs=Host filter=filter', '--wait']
300
+ api_expects(:report_templates, :schedule_report, 'Schedule').with_params(
301
+ 'id' => '3', "input_values" => {"Host filter" => "filter"}).returns(schedule_response)
302
+ api_expects(:report_templates, :report_data, 'Download report').with_params(
303
+ 'id' => '3', 'job_id' => 'JOB-UNIQUE-ID').returns(generated_report_response)
304
+
305
+ output = OutputMatcher.new('Report')
306
+ expected_result = success_result(output)
307
+ result = run_cmd(cmd + params)
308
+ assert_cmd(expected_result, result)
309
+ end
310
+
311
+ it 'polls for report while not ready' do
312
+ params = ['--id=3', '--inputs=Host filter=filter', '--wait']
313
+ api_expects(:report_templates, :schedule_report, 'Schedule').with_params(
314
+ 'id' => '3', "input_values" => {"Host filter" => "filter"}).returns(schedule_response)
315
+ api_expects(:report_templates, :report_data, 'No data first, download second call')
316
+ .twice.with_params('id' => '3', 'job_id' => 'JOB-UNIQUE-ID')
317
+ .returns(report_not_ready_response)
318
+ .then.returns(generated_report_response)
319
+
320
+ output = OutputMatcher.new('Report')
321
+ expected_result = success_result(output)
322
+ result = run_cmd(cmd + params)
323
+ assert_cmd(expected_result, result)
324
+ end
325
+ end
326
+ end
327
+
328
+ describe 'report-data' do
329
+ let(:cmd) { %w(report-template report-data) }
330
+ let(:tempfile) { Tempfile.new('template', '/tmp') }
331
+ let(:params) { ['--id=3', '--path=/tmp', '--job-id=JOB-UNIQUE-ID'] }
332
+
333
+ it 'download data if ready' do
334
+ api_expects(:report_templates, :report_data, 'Download report').with_params(
335
+ 'id' => '3', 'job_id' => 'JOB-UNIQUE-ID').returns(generated_report_response)
336
+
337
+ output = OutputMatcher.new("The response has been saved to #{tempfile.path}")
338
+ expected_result = success_result(output)
339
+ result = run_cmd(cmd + params)
340
+ assert_cmd(expected_result, result)
341
+ assert_equal('Report', tempfile.read)
342
+ end
343
+
344
+ it 'let user know data are not ready' do
345
+ api_expects(:report_templates, :report_data, 'Download report').with_params(
346
+ 'id' => '3', 'job_id' => 'JOB-UNIQUE-ID').returns(report_not_ready_response)
347
+
348
+ output = OutputMatcher.new("The report is not ready yet.")
349
+ expected_result = CommandExpectation.new(output, '', HammerCLI::EX_TEMPFAIL)
350
+ result = run_cmd(cmd + params)
351
+ assert_cmd(expected_result, result)
352
+ end
353
+ end
254
354
  end
@@ -17,7 +17,7 @@ require "mocha/setup"
17
17
  require 'hammer_cli'
18
18
  require 'hammer_cli_foreman/testing/api_expectations'
19
19
 
20
- FOREMAN_VERSION = Gem::Version.new(ENV['TEST_API_VERSION'] || '1.20')
20
+ FOREMAN_VERSION = Gem::Version.new(ENV['TEST_API_VERSION'] || '1.22')
21
21
 
22
22
  include HammerCLIForeman::Testing::APIExpectations
23
23
  HammerCLI.context[:api_connection].create('foreman') do
@@ -23,7 +23,7 @@ describe HammerCLIForeman::CommonParameter do
23
23
  let(:expected_record_count) { count_records(cmd.resource.call(:index)) }
24
24
 
25
25
  it_should_print_n_records
26
- it_should_print_columns ["Name", "Value"]
26
+ it_should_print_columns ["Name", "Value", "Type"]
27
27
  end
28
28
 
29
29
  end
@@ -37,7 +37,7 @@ describe HammerCLIForeman::CommonParameter do
37
37
  let(:cmd) { HammerCLIForeman::CommonParameter::SetCommand.new("", ctx) }
38
38
 
39
39
  context "parameters" do
40
- it_should_accept "name, value and hidden-value", ["--name=param", "--value=val", "--hidden-value=true"]
40
+ it_should_accept "name, value, parameter-type and hidden-value", ["--name=param", "--value=val", "--parameter-type=string", "--hidden-value=true"]
41
41
  # it_should_fail_with "name missing", ["--value=val"]
42
42
  # it_should_fail_with "value missing", ["--name=param"]
43
43
  # TODO: temporarily disabled, parameters are checked by the api
@@ -48,8 +48,8 @@ describe HammerCLIForeman::CommonParameter do
48
48
  ResourceMocks.mock_action_calls(
49
49
  [:common_parameters, :index, []],
50
50
  [:common_parameters, :create,
51
- {"id" => 1, "name" => "param", "value" => "val", "hidden-value" => false},
52
- {'common_parameter' => {'name' => 'param', 'value' => 'val', 'hidden_value' => false}, 'id' => 'param'}])
51
+ {"id" => 1, "name" => "param", "value" => "val", "parameter-type" => "string", "hidden-value" => false},
52
+ {'common_parameter' => {'name' => 'param', 'value' => 'val', 'parameter_type' => 'string', 'hidden_value' => false}, 'id' => 'param'}])
53
53
  end
54
54
  with_params ["--name=param", "--value=val", "--hidden-value=false"] do
55
55
  it_should_output "Created parameter [param] with value [val].,1,param", :csv
@@ -62,7 +62,7 @@ describe HammerCLIForeman::CommonParameter do
62
62
  [:common_parameters, :index, [{'name' => 'param', 'value' => 'test'}]],
63
63
  [:common_parameters, :update,
64
64
  {"id" => 1, "name" => "param", "value" => "val", "hidden-value" => false},
65
- {'common_parameter' => {'name' => 'param', 'value' => 'val', 'hidden_value' => false}, 'id' => 'param'}])
65
+ {'common_parameter' => {'name' => 'param', 'value' => 'val', 'parameter_type' => 'string', 'hidden_value' => false}, 'id' => 'param'}])
66
66
  end
67
67
 
68
68
  with_params ["--name=param", "--value=val", "--hidden-value=false"] do
@@ -70,6 +70,18 @@ describe HammerCLIForeman::CommonParameter do
70
70
  end
71
71
  end
72
72
 
73
+ context "adding params with parameter type" do
74
+ before :each do
75
+ ResourceMocks.mock_action_calls(
76
+ [:common_parameters, :index, []],
77
+ [:common_parameters, :create,
78
+ {"id" => 2, "name" => "xyz", "value" => "1", "parameter-type" => "integer", "hidden-value" => false},
79
+ {'common_parameter' => {'name' => 'xyz', 'value' => '1', 'parameter_type' => 'integer', 'hidden_value' => false}, 'id' => 'xyz'}])
80
+ end
81
+ with_params ["--name=xyz", "--value=1", "--parameter-type=integer", "--hidden-value=false"] do
82
+ it_should_output "Created parameter [xyz] with value [1].,2,xyz", :csv
83
+ end
84
+ end
73
85
  end
74
86
 
75
87