hammer_cli_foreman 0.16.0 → 0.17.0

Sign up to get free protection for your applications and to get access to all the features.
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