hammer_cli_foreman_puppet 0.0.6 → 0.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.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/lib/hammer_cli_foreman_puppet/associating_commands.rb +1 -1
  3. data/lib/hammer_cli_foreman_puppet/class.rb +1 -3
  4. data/lib/hammer_cli_foreman_puppet/combination.rb +0 -1
  5. data/lib/hammer_cli_foreman_puppet/command_extensions/combination.rb +3 -3
  6. data/lib/hammer_cli_foreman_puppet/commands.rb +3 -2
  7. data/lib/hammer_cli_foreman_puppet/host.rb +4 -5
  8. data/lib/hammer_cli_foreman_puppet/hostgroup.rb +7 -8
  9. data/lib/hammer_cli_foreman_puppet/i18n.rb +2 -2
  10. data/lib/hammer_cli_foreman_puppet/id_resolver.rb +5 -5
  11. data/lib/hammer_cli_foreman_puppet/option_sources/puppet_environment_params.rb +1 -2
  12. data/lib/hammer_cli_foreman_puppet/puppet_references.rb +0 -1
  13. data/lib/hammer_cli_foreman_puppet/smart_class_parameter.rb +6 -6
  14. data/lib/hammer_cli_foreman_puppet/smart_proxy.rb +2 -2
  15. data/lib/hammer_cli_foreman_puppet/version.rb +1 -1
  16. data/locale/cs_CZ/LC_MESSAGES/hammer-cli-foreman-puppet.mo +0 -0
  17. data/locale/cs_CZ/hammer-cli-foreman-puppet.po +282 -0
  18. data/locale/de/LC_MESSAGES/hammer-cli-foreman-puppet.mo +0 -0
  19. data/locale/de/hammer-cli-foreman-puppet.po +293 -0
  20. data/locale/en/LC_MESSAGES/hammer-cli-foreman-puppet.mo +0 -0
  21. data/locale/en/hammer-cli-foreman-puppet.po +276 -0
  22. data/locale/es/LC_MESSAGES/hammer-cli-foreman-puppet.mo +0 -0
  23. data/locale/es/hammer-cli-foreman-puppet.po +287 -0
  24. data/locale/fr/LC_MESSAGES/hammer-cli-foreman-puppet.mo +0 -0
  25. data/locale/fr/hammer-cli-foreman-puppet.po +285 -0
  26. data/locale/hammer-cli-foreman-puppet.pot +386 -0
  27. data/locale/ja/LC_MESSAGES/hammer-cli-foreman-puppet.mo +0 -0
  28. data/locale/ja/hammer-cli-foreman-puppet.po +283 -0
  29. data/locale/ka/LC_MESSAGES/hammer-cli-foreman-puppet.mo +0 -0
  30. data/locale/ka/hammer-cli-foreman-puppet.po +280 -0
  31. data/locale/pt_BR/LC_MESSAGES/hammer-cli-foreman-puppet.mo +0 -0
  32. data/locale/pt_BR/hammer-cli-foreman-puppet.po +288 -0
  33. data/locale/zh_CN/LC_MESSAGES/hammer-cli-foreman-puppet.mo +0 -0
  34. data/locale/zh_CN/hammer-cli-foreman-puppet.po +283 -0
  35. metadata +31 -57
  36. data/test/data/2.1/foreman_api.json +0 -1
  37. data/test/data/3.0/foreman_api.json +0 -1
  38. data/test/data/3.3/foreman_api.json +0 -1
  39. data/test/data/README.md +0 -27
  40. data/test/functional/config_group_test.rb +0 -28
  41. data/test/functional/host/create_test.rb +0 -195
  42. data/test/functional/host/update_test.rb +0 -126
  43. data/test/functional/hostgroup/create_test.rb +0 -178
  44. data/test/functional/hostgroup/update_test.rb +0 -126
  45. data/test/functional/proxy_test.rb +0 -86
  46. data/test/functional/smart_class_parameter_test.rb +0 -97
  47. data/test/functional/template_test.rb +0 -38
  48. data/test/functional/test_helper.rb +0 -7
  49. data/test/test_helper.rb +0 -29
  50. data/test/unit/apipie_resource_mock.rb +0 -186
  51. data/test/unit/config_group_test.rb +0 -73
  52. data/test/unit/helpers/command.rb +0 -163
  53. data/test/unit/helpers/fake_searchables.rb +0 -19
  54. data/test/unit/helpers/resource_disabled.rb +0 -24
  55. data/test/unit/puppet_class_test.rb +0 -72
  56. data/test/unit/puppet_environment_test.rb +0 -116
  57. data/test/unit/smart_class_parameter_test.rb +0 -114
  58. data/test/unit/test_helper.rb +0 -18
  59. data/test/unit/test_output_adapter.rb +0 -22
@@ -1,86 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'test_helper')
2
-
3
- describe 'proxy' do
4
- describe 'import-classes' do
5
- let(:cmd) { ['proxy', 'import-classes'] }
6
- let(:params) { ['--id=83'] }
7
- let(:report) do
8
- {
9
- 'message' => 'Successfully updated environment and puppetclasses from the on-disk puppet installation',
10
- 'environments_with_new_puppetclasses' => 2,
11
- 'environments_updated_puppetclasses' => 0,
12
- 'environments_obsolete' => 0,
13
- 'environments_ignored' => 0,
14
- 'results' => [{
15
- 'name' => 'development',
16
- 'actions' => [ 'new', 'update' ],
17
- 'new_puppetclasses' => [
18
- 'motd',
19
- 'hammer'
20
- ],
21
- 'updated_puppetclasses' => [
22
- 'stdlib',
23
- 'vim'
24
- ]
25
- },{
26
- 'name' => 'production',
27
- 'actions' => [ 'obsolete', 'ignore' ],
28
- 'obsolete_puppetclasses' => [
29
- 'apache'
30
- ],
31
- 'ignored_puppetclasses' => [
32
- 'hammer'
33
- ]
34
- }]
35
- }
36
- end
37
- let(:no_change_report) do
38
- {
39
- 'message' => 'No changes to your environments detected'
40
- }
41
- end
42
-
43
- it 'prints detailed report' do
44
- api_expects(:smart_proxies, :import_puppetclasses, 'Import classes')
45
- .with_params('id' => '83')
46
- .returns(report)
47
-
48
- output = OutputMatcher.new([
49
- 'Result:',
50
- ' Successfully updated environment and puppetclasses from the on-disk puppet installation',
51
- 'Changed environments:',
52
- ' 1) development',
53
- ' New classes:',
54
- ' motd',
55
- ' hammer',
56
- ' Updated classes:',
57
- ' stdlib',
58
- ' vim',
59
- ' 2) production',
60
- ' Removed classes:',
61
- ' apache',
62
- ' Ignored classes:',
63
- ' hammer'
64
- ])
65
- expected_result = success_result(output)
66
-
67
- result = run_cmd(cmd + params)
68
- assert_cmd(expected_result, result)
69
- end
70
-
71
- it 'prints a message when nothig has changed' do
72
- api_expects(:smart_proxies, :import_puppetclasses, 'Import classes')
73
- .with_params('id' => '83')
74
- .returns(no_change_report)
75
-
76
- output = OutputMatcher.new([
77
- 'Result:',
78
- ' No changes to your environments detected'
79
- ])
80
- expected_result = success_result(output)
81
-
82
- result = run_cmd(cmd + params)
83
- assert_cmd(expected_result, result)
84
- end
85
- end
86
- end
@@ -1,97 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'test_helper')
2
-
3
- describe 'sc-params update' do
4
- let(:cmd) { %w[sc-param update] }
5
-
6
- it 'does not allow to update parameter name' do
7
- params = ['--id=1', '--new-name=name2']
8
-
9
- expected_result = usage_error_result(
10
- cmd,
11
- "Unrecognised option '--new-name'.",
12
- 'Could not update the parameter'
13
- )
14
-
15
- api_expects_no_call
16
- result = run_cmd(cmd + params)
17
- assert_cmd(expected_result, result)
18
- end
19
- end
20
-
21
- describe 'sc-params add-matcher' do
22
- let(:cmd) { %w[sc-param add-matcher] }
23
- let(:override_value) { 'something' }
24
- let(:match) { 'domain = example.com' }
25
- let(:puppet_class) { { 'name' => 'motd', 'id' => '1' } }
26
- let(:parameter) { { 'name' => 'content', 'id' => '2' } }
27
- let(:base) do
28
- [
29
- '--puppet-class', puppet_class['name'],
30
- '--smart-class-parameter', parameter['name'],
31
- '--match', match
32
- ]
33
- end
34
-
35
- def api_expects_parameter_search(puppet_class, parameter)
36
- api_expects(:puppetclasses, :index, 'Find puppet class') do |par|
37
- par[:search] == %Q(name = "#{puppet_class['name']}")
38
- end.returns(index_response('motd' => [puppet_class]))
39
-
40
- api_expects(:smart_class_parameters, :index, 'Find smart parameter') do |par|
41
- par[:search] == %Q(key = "#{parameter['name']}") &&
42
- par[:puppetclass_id] == puppet_class['id']
43
- end.returns(index_response([parameter]))
44
- end
45
-
46
- it 'allows to set value' do
47
- params = ['--value', override_value]
48
- expected_result = success_result("Override value created.\n")
49
-
50
- api_expects_parameter_search(puppet_class, parameter)
51
-
52
- api_expects(:override_values, :create, 'Create override value').with_params(
53
- smart_class_parameter_id: parameter['id'],
54
- override_value: {
55
- match: match,
56
- value: override_value
57
- }
58
- )
59
-
60
- result = run_cmd(cmd + base + params)
61
- assert_cmd(expected_result, result)
62
- end
63
-
64
- it 'allows to set value with disabled puppet default' do
65
- params = ['--value', override_value, '--omit', false]
66
- expected_result = success_result("Override value created.\n")
67
-
68
- api_expects_parameter_search(puppet_class, parameter)
69
-
70
- api_expects(:override_values, :create, 'Create override value').with_params(
71
- smart_class_parameter_id: parameter['id'],
72
- override_value: {
73
- match: match,
74
- value: override_value,
75
- omit: false
76
- }
77
- )
78
-
79
- result = run_cmd(cmd + base + params)
80
- assert_cmd(expected_result, result)
81
- end
82
-
83
- it 'does not allow to use puppet default and value at the same time' do
84
- params = ['--value', 'something', '--omit', true]
85
-
86
- expected_result = usage_error_result(
87
- cmd,
88
- 'Cannot use --value when --omit is true.',
89
- 'Could not create the override value'
90
- )
91
-
92
- api_expects_parameter_search(puppet_class, parameter)
93
-
94
- result = run_cmd(cmd + base + params)
95
- assert_cmd(expected_result, result)
96
- end
97
- end
@@ -1,38 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'test_helper')
2
-
3
- describe 'template' do
4
- describe 'combinations' do
5
- before do
6
- @cmd = %w[template combination]
7
- end
8
-
9
- it 'should create new combination' do
10
- params = ['create', '--provisioning-template-id=10', '--hostgroup-id=1', '--puppet-environment-id=1']
11
- expected_result = success_result("Template combination created.\n")
12
- api_expects(:template_combinations, :create, 'Create template combination') do |p|
13
- p['provisioning_template_id'] == '10' &&
14
- p['hostgroup_id'] == '1' &&
15
- p['environment_id'] == 1 &&
16
- p['template_combination'] == { 'environment_id' => 1, 'hostgroup_id' => '1' }
17
- end
18
-
19
- result = run_cmd(@cmd + params)
20
- assert_cmd(expected_result, result)
21
- end
22
-
23
- it 'should update combination' do
24
- params = ['update', '--id=3', '--provisioning-template-id=10', '--hostgroup-id=1', '--puppet-environment-id=1']
25
- expected_result = success_result("Template combination updated.\n")
26
- api_expects(:template_combinations, :update, 'Update template combination') do |p|
27
- p['id'] == '3' &&
28
- p['provisioning_template_id'] == '10' &&
29
- p['hostgroup_id'] == '1' &&
30
- p['environment_id'] == 1 &&
31
- p['template_combination'] == { 'environment_id' => 1, 'hostgroup_id' => '1' }
32
- end
33
-
34
- result = run_cmd(@cmd + params)
35
- assert_cmd(expected_result, result)
36
- end
37
- end
38
- end
@@ -1,7 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '../test_helper')
2
-
3
- require 'hammer_cli/testing/command_assertions'
4
- require 'hammer_cli/testing/output_matchers'
5
-
6
- include HammerCLI::Testing::CommandAssertions
7
- include HammerCLI::Testing::OutputMatchers
data/test/test_helper.rb DELETED
@@ -1,29 +0,0 @@
1
- require 'simplecov'
2
- require 'pathname'
3
-
4
- SimpleCov.use_merging true
5
- SimpleCov.start do
6
- command_name 'MiniTest'
7
- add_filter 'test'
8
- end
9
- SimpleCov.root Pathname.new(File.dirname(__FILE__) + "../../../")
10
-
11
-
12
- require 'minitest/autorun'
13
- require 'minitest/spec'
14
- require "minitest-spec-context"
15
- require "mocha/minitest"
16
-
17
- require 'hammer_cli'
18
- require 'hammer_cli/testing/command_assertions'
19
- require 'hammer_cli_foreman/testing/api_expectations'
20
- FOREMAN_VERSION = Gem::Version.new(ENV['TEST_API_VERSION'] || '3.3')
21
-
22
- include HammerCLI::Testing::CommandAssertions
23
- include HammerCLIForeman::Testing::APIExpectations
24
- HammerCLI.context[:api_connection].create('foreman') do
25
- api_connection({}, FOREMAN_VERSION)
26
- end
27
-
28
- require 'hammer_cli_foreman'
29
- require 'hammer_cli_foreman_puppet'
@@ -1,186 +0,0 @@
1
- module ResourceMocks
2
-
3
- def self.mock_action_call(resource, action, value, params=:default)
4
- response = ApipieBindings::Example.new('GET', '/', '', 200, JSON.dump(value))
5
- @mocks ||= {}
6
- @mocks[[resource, action]] ||= {}
7
- @mocks[[resource, action]][params] = response
8
- ApipieBindings::API.any_instance.stubs(:fake_responses).returns(@mocks)
9
- end
10
-
11
- def self.clear_mocks
12
- @mocks = {}
13
- ApipieBindings::API.any_instance.stubs(:fake_responses).returns(@mocks)
14
- end
15
-
16
- def self.mock_action_calls(*calls)
17
- calls.each do |(resource, action, value, params)|
18
- mock_action_call(resource, action, value, (params || :default))
19
- end
20
- end
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
- def self.smart_variables_index
32
- ResourceMocks.mock_action_call(:smart_variables, :index,
33
- { "results" => [ { 'variable' => 'var', 'id' => '1'} ] })
34
- end
35
-
36
- def self.smart_variables_show
37
- ResourceMocks.mock_action_call(:smart_variables, :show, { "id" => 1, "override_value_order" => "fqdn" })
38
- end
39
-
40
- def self.organizations_index
41
- ResourceMocks.mock_action_call(:organizations, :index, {
42
- "results" => [
43
- {
44
- "label" => "Default_Organization",
45
- "id" => 1,
46
- "name" => "Default_Organization",
47
- "title" => "Default_Organization"
48
- }
49
- ]})
50
- end
51
-
52
- def self.hosts_show
53
- ResourceMocks.mock_action_call(:hosts, :show, {
54
- "ip" => "192.168.122.51",
55
- "ip6" => nil,
56
- "environment_id" => 1,
57
- "environment_name" => "production",
58
- "last_report" => "2016-10-24 12:06:31 UTC",
59
- "mac" => "52:54:00:ce:b2:b9",
60
- "realm_id" => nil,
61
- "realm_name" => nil,
62
- "sp_mac" => nil,
63
- "sp_ip" => nil,
64
- "sp_name" => nil,
65
- "domain_id" => 1,
66
- "domain_name" => "tstrachota.usersys.redhat.com",
67
- "architecture_id" => 1,
68
- "architecture_name" => "x86_64",
69
- "operatingsystem_id" => 1,
70
- "operatingsystem_name" => "CentOS 7.2.1511",
71
- "build" => false,
72
- "model_id" => 1,
73
- "hostgroup_id" => nil,
74
- "owner_id" => nil,
75
- "owner_type" => nil,
76
- "enabled" => true,
77
- "managed" => false,
78
- "use_image" => nil,
79
- "image_file" => "",
80
- "uuid" => nil,
81
- "compute_resource_id" => nil,
82
- "compute_resource_name" => nil,
83
- "compute_profile_id" => nil,
84
- "compute_profile_name" => nil,
85
- "capabilities" => ["build"],
86
- "provision_method" => "build",
87
- "certname" => "foreman.example.com",
88
- "image_id" => nil,
89
- "image_name" => nil,
90
- "created_at" => "2016-10-24 08:36:43 UTC",
91
- "updated_at" => "2016-10-24 12:06:46 UTC",
92
- "last_compile" => "2016-10-24 12:06:41 UTC",
93
- "global_status" => 0,
94
- "global_status_label" => "Warning",
95
- "organization_id" => nil,
96
- "organization_name" => nil,
97
- "location_id" => nil,
98
- "location_name" => nil,
99
- "puppet_status" => 0,
100
- "model_name" => "KVM",
101
- "configuration_status" => 0,
102
- "configuration_status_label" => "No reports",
103
- "name" => "foreman.example.com",
104
- "id" => 1,
105
- "puppet_proxy_id" => 1,
106
- "puppet_proxy_name" => "foreman.example.com",
107
- "puppet_ca_proxy_id" => 1,
108
- "puppet_ca_proxy_name" => "foreman.example.com",
109
- "puppet_proxy" => {
110
- "name" => "foreman.example.com",
111
- "id" => 1,
112
- "url" => "https://foreman.example.com:9090"
113
- },
114
- "puppet_ca_proxy" => {
115
- "name" => "foreman.example.com",
116
- "id" => 1,
117
- "url" => "https://foreman.example.com:9090"
118
- },
119
- "hostgroup_name" => nil,
120
- "hostgroup_title" => nil,
121
- "parameters" => [],
122
- "all_parameters" => [],
123
- "interfaces" => [{
124
- "id" => 1,
125
- "name" => "foreman.example.com",
126
- "ip" => "192.168.122.51",
127
- "mac" => "52:54:00:ce:b2:b9",
128
- "identifier" => "eth0",
129
- "primary" => true,
130
- "provision" => true,
131
- "type" => "interface"
132
- },
133
- {
134
- "id" => 2,
135
- "name" => nil,
136
- "ip" => "10.34.130.105",
137
- "mac" => "52:54:00:f5:1b:57",
138
- "identifier" => "eth1",
139
- "primary" => false,
140
- "provision" => false,
141
- "type" => "interface"
142
- }],
143
- "puppetclasses" => [],
144
- "config_groups" => [],
145
- "all_puppetclasses" => []
146
- })
147
- end
148
-
149
-
150
- def self.organizations_show
151
- ResourceMocks.mock_action_calls(
152
- [:organizations, :index, [{ "id" => 2, "name" => "ACME" }]],
153
- [:organizations, :show, { "id" => 2, "name" => "ACME" }]
154
- )
155
- end
156
-
157
- def self.locations_index
158
- ResourceMocks.mock_action_call(:locations, :index, {
159
- "results" => [
160
- {
161
- "ancestry" => nil,
162
- "created_at" => "2014-07-17T17:21:49+02:00",
163
- "updated_at" => "2015-06-17T13:18:10+02:00",
164
- "id" => 2,
165
- "name" => "Default_Location",
166
- "title" => "Default_Location"
167
- }
168
- ]})
169
- end
170
-
171
- def self.locations_show
172
- ResourceMocks.mock_action_calls(
173
- [:locations, :index, [{ "id" => 2, "name" => "Rack" }]],
174
- [:locations, :show, { "id" => 2, "name" => "Rack" }]
175
- )
176
- end
177
-
178
- def self.config_groups_index
179
- ResourceMocks.mock_action_call(:config_groups, :index, [{
180
- id: 15,
181
- name: "test config group",
182
- puppetclasses: [ { name: "My puppetclass" } ]
183
- }])
184
- end
185
-
186
- end
@@ -1,73 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'test_helper')
2
- require File.join(File.dirname(__FILE__), 'apipie_resource_mock')
3
-
4
- require 'hammer_cli_foreman_puppet/config_group'
5
-
6
- describe HammerCLIForemanPuppet::ConfigGroup do
7
- include CommandTestHelper
8
-
9
- context "ListCommand" do
10
- let(:cmd) { HammerCLIForemanPuppet::ConfigGroup::ListCommand.new("", ctx) }
11
-
12
- before :each do
13
- ResourceMocks.config_groups_index
14
- end
15
-
16
- context "parameters" do
17
- it_should_accept "no arguments"
18
- it_should_accept_search_params
19
- end
20
-
21
- context "output" do
22
- let(:expected_record_count) { cmd.resource.call(:index).length }
23
- it_should_print_n_records
24
- it_should_print_columns ["ID", "Name"]
25
- end
26
- end
27
-
28
- context "InfoCommand" do
29
- let(:cmd) { HammerCLIForemanPuppet::ConfigGroup::InfoCommand.new("", ctx) }
30
-
31
- context "parameters" do
32
- it_should_accept "id", ["--id=1"]
33
- it_should_accept "name", ["--name=group_x"]
34
- end
35
-
36
- context "output" do
37
- with_params ["--id=1"] do
38
- it_should_print_n_records 1
39
- it_should_print_column "Name"
40
- it_should_print_column "ID"
41
- it_should_print_column "Puppetclasses"
42
- end
43
- end
44
- end
45
-
46
- context "CreateCommand" do
47
- let(:cmd) { HammerCLIForemanPuppet::ConfigGroup::CreateCommand.new("", ctx) }
48
-
49
- context "parameters" do
50
- it_should_accept 'name, puppetclass ids',
51
- %w[--name=first_group --puppet-class-ids=1,2]
52
- end
53
- end
54
-
55
- context "DeleteCommand" do
56
- let(:cmd) { HammerCLIForemanPuppet::ConfigGroup::DeleteCommand.new("", ctx) }
57
-
58
- context "parameters" do
59
- it_should_accept "name", ["--name=group_x"]
60
- it_should_accept "id", ["--id=1"]
61
- end
62
- end
63
-
64
- context "UpdateCommand" do
65
-
66
- let(:cmd) { HammerCLIForemanPuppet::ConfigGroup::UpdateCommand.new("", ctx) }
67
-
68
- context "parameters" do
69
- it_should_accept "name", ["--name=group_x"]
70
- it_should_accept "id", ["--id=1"]
71
- end
72
- end
73
- end
@@ -1,163 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '../test_output_adapter')
2
-
3
- class IdResolverTestProxy
4
-
5
- attr_reader :api
6
-
7
- def initialize(original_resolver)
8
- @original_resolver = original_resolver
9
- define_id_finders
10
- end
11
-
12
- def scoped_options(scope, options, mode = nil)
13
- @original_resolver.scoped_options(scope, options, mode)
14
- end
15
-
16
- def searchables(resource)
17
- @original_resolver.searchables(resource)
18
- end
19
-
20
- def puppet_environment_id(options)
21
- environment_id(options)
22
- end
23
-
24
- def puppet_environment_ids(options)
25
- environment_ids(options)
26
- end
27
-
28
- protected
29
-
30
- def define_id_finders
31
- @original_resolver.api.resources.each do |resource|
32
- method_name = "#{resource.singular_name}_id"
33
- self.class.send(:define_method, method_name) do |options|
34
- value = options[HammerCLI.option_accessor_name("id")]
35
- value ||= HammerCLI::NilValue if searchables(resource).any? do |s|
36
- options[HammerCLI.option_accessor_name(s.name)] == HammerCLI::NilValue
37
- end
38
- value ||= 1 if searchables(resource).any? do |s|
39
- !options[HammerCLI.option_accessor_name(s.name)].nil?
40
- end
41
- value
42
- end
43
-
44
- method_name = "#{resource.singular_name}_ids"
45
- self.class.send(:define_method, method_name) do |options|
46
- options["option_#{resource.singular_name}_ids"].nil? ? nil : [1]
47
- end
48
- end
49
- end
50
-
51
- end
52
-
53
-
54
- module CommandTestHelper
55
-
56
- def self.included(base)
57
- base.extend(ClassMethods)
58
-
59
- base.before :each do
60
- resolver = cmd.resolver
61
- cmd.stubs(:resolver).returns(IdResolverTestProxy.new(resolver))
62
- end
63
- end
64
-
65
- def count_records(data)
66
- HammerCLIForeman.collection_to_common_format(data['results']).count
67
- end
68
-
69
- module ClassMethods
70
-
71
- def with_params(params, &block)
72
- context "with params "+params.to_s do
73
- let(:with_params) { params }
74
- self.instance_eval &block
75
- end
76
- end
77
-
78
- def it_should_call_action(action, params, headers={})
79
- it "should call action "+action.to_s do
80
- arguments ||= respond_to?(:with_params) ? with_params : []
81
- ApipieBindings::API.any_instance.expects(:call).with() do |r,a,p,h,o|
82
- (r == cmd.resource.name && a == action && p == params && h == headers)
83
- end
84
- cmd.run(arguments)
85
- end
86
- end
87
-
88
- def it_should_call_action_and_test_params(action, &block)
89
- it "should call action "+action.to_s do
90
- arguments ||= respond_to?(:with_params) ? with_params : []
91
- ApipieBindings::API.any_instance.expects(:call).with() do |r,a,p,h,o|
92
- (r == cmd.resource.name && a == action && yield(p))
93
- end
94
- cmd.run(arguments)
95
- end
96
- end
97
-
98
- def it_should_fail_with(message, arguments=[])
99
- it "should fail with " + message.to_s do
100
- _(cmd.run(arguments)).must_equal HammerCLI::EX_USAGE
101
- end
102
- end
103
-
104
- def it_should_accept(message, arguments=[])
105
- it "should accept " + message.to_s do
106
- out, err = capture_io do
107
- _(cmd.run(arguments)).must_equal HammerCLI::EX_OK
108
- end
109
- end
110
- end
111
-
112
- def it_should_output(message, adapter=:base)
113
- it "should output '" + message.to_s + "'" do
114
- arguments ||= respond_to?(:with_params) ? with_params : []
115
- cmd.stubs(:context).returns(ctx.update(:adapter => adapter))
116
- out, err = capture_io do
117
- cmd.run(arguments)
118
- end
119
- _(out).must_include message
120
- end
121
- end
122
-
123
- def it_should_print_column(column_name, arguments=nil)
124
- it "should print column " + column_name do
125
- arguments ||= respond_to?(:with_params) ? with_params : []
126
-
127
- cmd.stubs(:context).returns(ctx.update(:adapter => :test))
128
- out, err = capture_io do
129
- cmd.run(arguments)
130
- end
131
-
132
- _(out.split("\n")[0]).must_match /.*##{column_name}#.*/
133
- end
134
- end
135
-
136
- def it_should_print_columns(column_names, arguments=nil)
137
- column_names.each do |name|
138
- it_should_print_column name, arguments
139
- end
140
- end
141
-
142
- def it_should_print_n_records(count=nil, arguments=nil)
143
- it "should print correct count of records" do
144
- arguments ||= respond_to?(:with_params) ? with_params : []
145
-
146
- cmd.stubs(:context).returns(ctx.update(:adapter => :test))
147
- count ||= expected_record_count rescue 0
148
- out, err = capture_io do
149
- cmd.run(arguments)
150
- end
151
- _(out.split(/\n/).length).must_equal count+1 # plus 1 for line with column headers
152
- end
153
- end
154
-
155
- def it_should_accept_search_params
156
- it_should_accept "search", ["--search=some_search"]
157
- it_should_accept "per page", ["--per-page=1"]
158
- it_should_accept "page", ["--page=2"]
159
- it_should_accept "order", ["--order=order"]
160
- end
161
- end
162
-
163
- end