knife-cloud 1.2.1 → 1.2.3

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 (68) hide show
  1. checksums.yaml +5 -5
  2. data/LICENSE +1 -1
  3. data/lib/chef/knife/cloud/chefbootstrap/bootstrap_distribution.rb +2 -2
  4. data/lib/chef/knife/cloud/chefbootstrap/bootstrap_options.rb +115 -133
  5. data/lib/chef/knife/cloud/chefbootstrap/bootstrap_protocol.rb +6 -6
  6. data/lib/chef/knife/cloud/chefbootstrap/bootstrapper.rb +11 -12
  7. data/lib/chef/knife/cloud/chefbootstrap/ssh_bootstrap_protocol.rb +49 -54
  8. data/lib/chef/knife/cloud/chefbootstrap/unix_distribution.rb +3 -3
  9. data/lib/chef/knife/cloud/chefbootstrap/windows_distribution.rb +3 -3
  10. data/lib/chef/knife/cloud/chefbootstrap/winrm_bootstrap_protocol.rb +11 -12
  11. data/lib/chef/knife/cloud/command.rb +24 -27
  12. data/lib/chef/knife/cloud/exceptions.rb +1 -2
  13. data/lib/chef/knife/cloud/fog/options.rb +8 -8
  14. data/lib/chef/knife/cloud/fog/service.rb +54 -60
  15. data/lib/chef/knife/cloud/helpers.rb +2 -3
  16. data/lib/chef/knife/cloud/list_resource_command.rb +6 -7
  17. data/lib/chef/knife/cloud/list_resource_options.rb +5 -5
  18. data/lib/chef/knife/cloud/server/create_command.rb +30 -35
  19. data/lib/chef/knife/cloud/server/create_options.rb +33 -34
  20. data/lib/chef/knife/cloud/server/delete_command.rb +12 -15
  21. data/lib/chef/knife/cloud/server/delete_options.rb +7 -8
  22. data/lib/chef/knife/cloud/server/list_command.rb +22 -22
  23. data/lib/chef/knife/cloud/server/list_options.rb +9 -10
  24. data/lib/chef/knife/cloud/server/options.rb +7 -7
  25. data/lib/chef/knife/cloud/server/show_command.rb +5 -5
  26. data/lib/chef/knife/cloud/server/show_options.rb +5 -6
  27. data/lib/chef/knife/cloud/service.rb +12 -13
  28. data/lib/knife-cloud/version.rb +2 -2
  29. data/lib/test/fixtures/knife.rb +3 -3
  30. data/lib/test/fixtures/validation.pem +27 -0
  31. data/lib/test/knife-utils/helper.rb +11 -11
  32. data/lib/test/knife-utils/knife_test_utils.rb +4 -4
  33. data/lib/test/knife-utils/matchers.rb +3 -3
  34. data/lib/test/knife-utils/test_bed.rb +38 -38
  35. data/lib/test/templates/windows-chef-client-msi.erb +3 -4
  36. data/lib/test/templates/windows-shell.erb +2 -2
  37. metadata +12 -152
  38. data/.gitignore +0 -33
  39. data/.travis.yml +0 -6
  40. data/CHANGELOG.md +0 -133
  41. data/CONTRIBUTING.md +0 -5
  42. data/Gemfile +0 -9
  43. data/README.md +0 -421
  44. data/Rakefile +0 -35
  45. data/ci.gemfile +0 -18
  46. data/knife-cloud.gemspec +0 -26
  47. data/spec/resource_spec_helper.rb +0 -49
  48. data/spec/server_command_common_spec_helper.rb +0 -48
  49. data/spec/spec_helper.rb +0 -25
  50. data/spec/support/shared_examples_for_command.rb +0 -35
  51. data/spec/support/shared_examples_for_servercreatecommand.rb +0 -144
  52. data/spec/support/shared_examples_for_serverdeletecommand.rb +0 -77
  53. data/spec/support/shared_examples_for_service.rb +0 -85
  54. data/spec/unit/bootstrap_protocol_spec.rb +0 -98
  55. data/spec/unit/bootstrapper_spec.rb +0 -171
  56. data/spec/unit/cloud_command_spec.rb +0 -35
  57. data/spec/unit/command_spec.rb +0 -49
  58. data/spec/unit/fog_service_spec.rb +0 -163
  59. data/spec/unit/list_resource_command_spec.rb +0 -140
  60. data/spec/unit/server_create_command_spec.rb +0 -198
  61. data/spec/unit/server_delete_command_spec.rb +0 -25
  62. data/spec/unit/server_list_command_spec.rb +0 -119
  63. data/spec/unit/server_show_command_spec.rb +0 -64
  64. data/spec/unit/service_spec.rb +0 -46
  65. data/spec/unit/ssh_bootstrap_protocol_spec.rb +0 -116
  66. data/spec/unit/unix_distribution_spec.rb +0 -37
  67. data/spec/unit/windows_distribution_spec.rb +0 -37
  68. data/spec/unit/winrm_bootstrap_protocol_spec.rb +0 -108
data/Rakefile DELETED
@@ -1,35 +0,0 @@
1
- # Author:: Kaustubh Deorukhkar (<kaustubh@clogeny.com>)
2
- # Copyright:: Copyright (c) 2013 Opscode, Inc.
3
-
4
- require 'bundler'
5
- Bundler::GemHelper.install_tasks
6
-
7
- require 'rubygems'
8
- require 'rubygems/package_task'
9
-
10
- task default: :all
11
- task all: [:spec, :uninstall, :install]
12
-
13
- # Packaging
14
- GEM_NAME = 'knife-cloud'.freeze
15
- require File.dirname(__FILE__) + '/lib/knife-cloud/version'
16
- spec = eval(File.read('knife-cloud.gemspec'))
17
- Gem::PackageTask.new(spec) do |pkg|
18
- pkg.gem_spec = spec
19
- end
20
-
21
- desc "uninstall #{GEM_NAME}-#{Knife::Cloud::VERSION}.gem from system..."
22
- task :uninstall do
23
- sh %(gem uninstall #{GEM_NAME} -x -v #{Knife::Cloud::VERSION} )
24
- end
25
-
26
- # rspec
27
- begin
28
- require 'rspec/core/rake_task'
29
- desc 'Run all specs in spec directory'
30
- RSpec::Core::RakeTask.new(:spec) do |t|
31
- t.pattern = 'spec/unit/**/*_spec.rb'
32
- end
33
- rescue LoadError
34
- STDERR.puts "\n*** RSpec not available. (sudo) gem install rspec to run unit tests. ***\n\n"
35
- end
data/ci.gemfile DELETED
@@ -1,18 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- # Specify your gem's dependencies in knife-cloud.gemspec
4
- gemspec
5
-
6
- if ENV['CHEF_VERSION'] == 'master'
7
- gem 'chef', github: 'chef/chef'
8
- elsif ENV['CHEF_VERSION'] == '< 12'
9
- gem 'ohai', '7.4.1'
10
- gem 'chef', ENV['CHEF_VERSION']
11
- else
12
- gem 'chef', ENV['CHEF_VERSION']
13
- end
14
-
15
- group :development do
16
- gem 'rake'
17
- gem 'knife-windows'
18
- end
@@ -1,26 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- $LOAD_PATH.push File.expand_path('../lib', __FILE__)
3
- require 'knife-cloud/version'
4
-
5
- Gem::Specification.new do |s|
6
- s.name = 'knife-cloud'
7
- s.version = Knife::Cloud::VERSION
8
- s.platform = Gem::Platform::RUBY
9
- s.extra_rdoc_files = ['README.md', 'LICENSE']
10
- s.authors = ['Kaustubh Deorukhkar', 'Ameya Varade']
11
- s.email = ['dev@chef.io']
12
- s.homepage = 'https://github.com/chef/knife-cloud'
13
- s.summary = 'knife-cloud plugin'
14
- s.description = s.summary
15
-
16
- s.files = `git ls-files`.split("\n")
17
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
- s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
19
- s.require_paths = %w(lib spec)
20
-
21
- s.add_dependency 'knife-windows', '>= 0.5.14'
22
- s.add_dependency 'chef', '>= 0.10.10'
23
- s.add_dependency 'mixlib-shellout'
24
-
25
- %w(rspec-core rspec-expectations rspec-mocks rspec_junit_formatter fog rubocop).each { |gem| s.add_development_dependency gem }
26
- end
@@ -1,49 +0,0 @@
1
- #
2
- # Author:: Prabhu Das (<prabhu.das@clogeny.com>)
3
- # Copyright:: Copyright (c) 2014 Chef Software, Inc.
4
- # License:: Apache License, Version 2.0
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
-
18
- $:.unshift File.expand_path('../../lib', __FILE__)
19
- require 'json'
20
-
21
- # Creates a resource class that can dynamically add attributes to
22
- # instances and set the values
23
- module JSONModule
24
- def to_json
25
- hash = {}
26
- self.instance_variables.each do |var|
27
- hash[var] = self.instance_variable_get var
28
- end
29
- hash.to_json
30
- end
31
- def from_json! string
32
- JSON.load(string).each do |var, val|
33
- self.instance_variable_set var, val
34
- end
35
- end
36
- end
37
-
38
- class TestResource
39
- include JSONModule
40
- def initialize(*args)
41
- args.each do |arg|
42
- arg.each do |key, value|
43
- add_attribute = "class << self; attr_accessor :#{key}; end"
44
- eval(add_attribute)
45
- eval("@#{key} = value")
46
- end
47
- end
48
- end
49
- end
@@ -1,48 +0,0 @@
1
- #
2
- # Author:: Siddheshwar More (<siddheshwar.more@clogeny.com>)
3
- # Copyright:: Copyright (c) 2014 Chef Software, Inc.
4
- # License:: Apache License, Version 2.0
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
-
18
- $:.unshift File.expand_path('../../lib', __FILE__)
19
-
20
- # Common helper methods used accrossed knife plugin during Integration testing.
21
- #
22
- # run_cmd_check_status_and_output: It checks knife plugin command exitstatus(i.e '0' = succeed and '1' = fails)
23
- # and also checks command output(i.e stdout or stderr)
24
- #
25
- # run_cmd_check_stdout: It checks commands stdout.
26
- #
27
- # server_create_common_bfr_aftr: Its contains common before and after blocks used for server create
28
-
29
- def run_cmd_check_status_and_output(expected_status = "succeed", expected_result = nil)
30
- it do
31
- match_status("should #{expected_status}")
32
- expect(cmd_output).to include(expected_result) if expected_result
33
- end
34
- end
35
-
36
- def run_cmd_check_stdout(expected_result)
37
- it { match_stdout(/#{expected_result}/) }
38
- end
39
-
40
- def server_create_common_bfr_aftr(platform = "linux")
41
- before { create_node_name(platform) }
42
- after { run(delete_instance_cmd("#{cmd_output}")) }
43
- end
44
-
45
- def rm_known_host
46
- known_hosts = File.expand_path("~") + "/.ssh/known_hosts"
47
- FileUtils.rm_rf(known_hosts)
48
- end
@@ -1,25 +0,0 @@
1
- #
2
- # Author:: Prabhu Das (<prabhu.das@clogeny.com>)
3
- # Author:: Siddheshwar More (<siddheshwar.more@clogeny.com>)
4
- # Copyright:: Copyright (c) 2013-2014 Chef Software, Inc.
5
- # License:: Apache License, Version 2.0
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
-
19
- $:.unshift File.expand_path('../../lib', __FILE__)
20
- require 'json'
21
- require 'chef/knife/cloud/exceptions'
22
- require 'chef/exceptions'
23
- require 'chef/config'
24
- require 'resource_spec_helper'
25
- require 'server_command_common_spec_helper'
@@ -1,35 +0,0 @@
1
- #
2
- # Author:: Mukta Aphale (<mukta.aphale@clogeny.com>)
3
- # Author:: Siddheshwar More (<siddheshwar.more@clogeny.com>)
4
- # Copyright:: Copyright (c) 2013-2014 Chef Software, Inc.
5
- # License:: Apache License, Version 2.0
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
-
19
- require 'chef/knife/cloud/command'
20
- require 'chef/knife/cloud/service'
21
-
22
- shared_examples_for Chef::Knife::Cloud::Command do |instance|
23
- it "runs with correct method calls" do
24
- allow(instance).to receive(:execute_command)
25
- allow(instance).to receive(:create_service_instance).and_return(Chef::Knife::Cloud::Service.new)
26
- expect(instance).to receive(:set_default_config).ordered
27
- expect(instance).to receive(:validate!).ordered
28
- expect(instance).to receive(:validate_params!).ordered
29
- expect(instance).to receive(:create_service_instance).ordered
30
- expect(instance).to receive(:before_exec_command).ordered
31
- expect(instance).to receive(:execute_command).ordered
32
- expect(instance).to receive(:after_exec_command).ordered
33
- instance.run
34
- end
35
- end
@@ -1,144 +0,0 @@
1
- #
2
- # Author:: Mukta Aphale (<mukta.aphale@clogeny.com>)
3
- # Author:: Siddheshwar More (<siddheshwar.more@clogeny.com>)
4
- # Copyright:: Copyright (c) 2013-2014 Chef Software, Inc.
5
- # License:: Apache License, Version 2.0
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
-
19
- require 'spec_helper'
20
- require 'chef/knife/cloud/server/create_command'
21
-
22
- def get_mock_resource(id)
23
- obj = Object.new
24
- allow(obj).to receive(:id).and_return(id)
25
- obj
26
- end
27
-
28
- shared_examples_for Chef::Knife::Cloud::ServerCreateCommand do |instance|
29
- before do
30
- instance.service = double
31
- allow(instance.ui).to receive(:fatal)
32
-
33
- allow(instance.service).to receive(:get_image).and_return(get_mock_resource('image_id'))
34
-
35
- allow(instance.service).to receive(:get_flavor).and_return(get_mock_resource('flavor_id'))
36
- end
37
-
38
- describe "#before_exec_command" do
39
- it "calls create_server_dependencies" do
40
- expect(instance.service).to receive(:create_server_dependencies)
41
- instance.before_exec_command
42
- end
43
- it "delete_server_dependencies on any error" do
44
- allow(instance).to receive(:execute_command)
45
- allow(instance).to receive(:after_exec_command)
46
- allow(instance).to receive(:validate!)
47
- allow(instance).to receive(:validate_params!)
48
- instance.service = Chef::Knife::Cloud::Service.new
49
- allow(instance).to receive(:create_service_instance).and_return(instance.service)
50
- allow(instance.service).to receive(:get_image).and_return(get_mock_resource('image_id'))
51
- allow(instance.service).to receive(:get_flavor).and_return(get_mock_resource('flavor_id'))
52
- allow(instance.service).to receive(:create_server_dependencies).and_raise(Chef::Knife::Cloud::CloudExceptions::ServerCreateDependenciesError)
53
- expect(instance.service).to receive(:delete_server_dependencies)
54
- expect(instance.service).to_not receive(:delete_server_on_failure)
55
- expect(instance).to receive(:exit)
56
- instance.run
57
- end
58
- end
59
-
60
- describe "#execute_command" do
61
- it "calls create_server" do
62
- expect(instance.service).to receive(:create_server).and_return(true)
63
- expect(instance.service).to receive(:server_summary)
64
- instance.execute_command
65
- end
66
-
67
- it "delete_server_dependencies on any error" do
68
- allow(instance).to receive(:before_exec_command)
69
- allow(instance).to receive(:after_exec_command)
70
- allow(instance).to receive(:validate!)
71
- allow(instance).to receive(:validate_params!)
72
- instance.service = Chef::Knife::Cloud::Service.new
73
- allow(instance).to receive(:create_service_instance).and_return(instance.service)
74
- allow(instance.service).to receive(:create_server).and_raise(Chef::Knife::Cloud::CloudExceptions::ServerCreateError)
75
- expect(instance.service).to receive(:delete_server_dependencies)
76
- expect(instance.service).to_not receive(:delete_server_on_failure)
77
- expect(instance).to receive(:exit)
78
- instance.run
79
- end
80
- end
81
-
82
- describe "#bootstrap" do
83
- it "execute with correct method calls" do
84
- @bootstrap = Object.new
85
- allow(@bootstrap).to receive(:bootstrap)
86
- allow(instance.ui).to receive(:info)
87
- allow(Chef::Knife::Cloud::Bootstrapper).to receive(:new).and_return(@bootstrap)
88
- expect(instance).to receive(:before_bootstrap).ordered
89
- expect(instance).to receive(:after_bootstrap).ordered
90
- instance.bootstrap
91
- end
92
- end
93
-
94
- describe "#after_bootstrap" do
95
- it "display server summary" do
96
- expect(instance.service).to receive(:server_summary)
97
- instance.after_bootstrap
98
- end
99
- end
100
-
101
- describe "#get_node_name" do
102
- it "auto generates chef_node_name" do
103
- instance.config[:bootstrap_protocol] = 'ssh'
104
- instance.config[:ssh_password] = 'password'
105
- instance.config[:image_os_type] = 'linux'
106
- instance.config[:chef_node_name_prefix] = 'os'
107
- expect(instance).to receive(:get_node_name).and_call_original
108
- instance.validate_params!
109
- expect(instance.config[:chef_node_name]).to be =~ /os-*/
110
- end
111
-
112
- it "auto generates unique chef_node_name" do
113
- node_names = []
114
- instance.config[:bootstrap_protocol] = 'ssh'
115
- instance.config[:ssh_password] = 'password'
116
- instance.config[:image_os_type] = 'linux'
117
- instance.config[:chef_node_name_prefix] = 'os'
118
- 5.times do
119
- instance.config[:chef_node_name] = nil
120
- instance.validate_params!
121
- expect(node_names).to_not include(instance.config[:chef_node_name])
122
- node_names.push(instance.config[:chef_node_name])
123
- end
124
- end
125
- end
126
-
127
- describe "#cleanup_on_failure" do
128
- it "delete server dependencies on delete_server_on_failure set" do
129
- instance.config[:delete_server_on_failure] = true
130
- instance.service = Chef::Knife::Cloud::Service.new
131
- expect(instance.service).to receive(:delete_server_dependencies)
132
- expect(instance.service).to receive(:delete_server_on_failure)
133
- instance.cleanup_on_failure
134
- end
135
-
136
- it "don't delete server dependencies on delete_server_on_failure option is missing" do
137
- instance.config[:delete_server_on_failure] = false
138
- Chef::Config[:knife].delete(:delete_server_on_failure)
139
- expect(instance.service).to_not receive(:delete_server_dependencies)
140
- expect(instance.service).to_not receive(:delete_server_on_failure)
141
- instance.cleanup_on_failure
142
- end
143
- end
144
- end
@@ -1,77 +0,0 @@
1
- #
2
- # Author:: Mukta Aphale (<mukta.aphale@clogeny.com>)
3
- # Author:: Siddheshwar More (<siddheshwar.more@clogeny.com>)
4
- # Copyright:: Copyright (c) 2013-2014 Chef Software, Inc.
5
- # License:: Apache License, Version 2.0
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
-
19
- require 'chef/knife/cloud/server/delete_command'
20
-
21
- shared_examples_for Chef::Knife::Cloud::ServerDeleteCommand do |instance|
22
- describe "#delete_from_chef" do
23
- it "expects chef warning message when purge option is disabled" do
24
- server_name = "testserver"
25
- expect(instance.ui).to receive(:warn).with("Corresponding node and client for the #{server_name} server were not deleted and remain registered with the Chef Server")
26
- instance.delete_from_chef(server_name)
27
- end
28
-
29
- it "deletes chef node and client when purge option is enabled" do
30
- instance.config[:purge] = true
31
- server_name = "testserver"
32
- expect(instance).to receive(:destroy_item).with(Chef::Node, server_name, "node").ordered
33
- expect(instance).to receive(:destroy_item).with(Chef::ApiClient, server_name, "client").ordered
34
- instance.delete_from_chef(server_name)
35
- end
36
-
37
- it "deletes chef node specified with node-name option overriding the instance server_name" do
38
- instance.config[:purge] = true
39
- server_name = "testserver"
40
- chef_node_name = "testnode"
41
- instance.config[:chef_node_name] = chef_node_name
42
- expect(instance).to receive(:destroy_item).with(Chef::Node, chef_node_name, "node").ordered
43
- expect(instance).to receive(:destroy_item).with(Chef::ApiClient, chef_node_name, "client").ordered
44
- instance.delete_from_chef(chef_node_name)
45
- end
46
- end
47
-
48
- describe "#execute_command" do
49
- it "execute with correct method calls" do
50
- instance::name_args = ["testserver"]
51
- instance.service = double
52
- expect(instance.service).to receive(:delete_server).ordered
53
- expect(instance).to receive(:delete_from_chef).ordered
54
- instance.execute_command
55
- end
56
- end
57
-
58
- describe "#destroy_item" do
59
- it "destroy chef node" do
60
- node_name = "testnode"
61
- test_obj = Object.new
62
- allow(Chef::Node).to receive(:load).and_return(test_obj)
63
- allow(test_obj).to receive(:destroy)
64
- expect(instance.ui).to receive(:warn).with("Deleted node #{node_name}")
65
- instance.destroy_item(Chef::Node, node_name, "node")
66
- end
67
-
68
- it "destroy chef client" do
69
- client_name = "testclient"
70
- test_obj = Object.new
71
- allow(Chef::ApiClient).to receive(:load).and_return(test_obj)
72
- allow(test_obj).to receive(:destroy)
73
- expect(instance.ui).to receive(:warn).with("Deleted client #{client_name}")
74
- instance.destroy_item(Chef::ApiClient, client_name, "client")
75
- end
76
- end
77
- end