diff options
author | Xabier de Zuazo <xabier@onddo.com> | 2013-02-10 17:54:19 +0100 |
---|---|---|
committer | Bryan McLellan <btm@opscode.com> | 2013-06-19 14:09:57 -0700 |
commit | feee9f77e7dc36d1d6eca1d5f923cabcf6158039 (patch) | |
tree | 93bdc01898aba0f77eb9ef9d6256dded5dc4f60b /spec/unit/provider/ifconfig | |
parent | abe89319941debc7779d7d9fc23e1c5db0e1c931 (diff) | |
download | chef-feee9f77e7dc36d1d6eca1d5f923cabcf6158039.tar.gz |
[CHEF-3029] Provider::Ifconfig::Debian basic unit tests created
Diffstat (limited to 'spec/unit/provider/ifconfig')
-rw-r--r-- | spec/unit/provider/ifconfig/debian_spec.rb | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/spec/unit/provider/ifconfig/debian_spec.rb b/spec/unit/provider/ifconfig/debian_spec.rb new file mode 100644 index 0000000000..bb554e8e4f --- /dev/null +++ b/spec/unit/provider/ifconfig/debian_spec.rb @@ -0,0 +1,78 @@ +# +# Author:: Xabier de Zuazo (xabier@onddo.com) +# Copyright:: Copyright (c) 2013 Onddo Labs, SL. +# License:: Apache License, Version 2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +require 'spec_helper' +require 'chef/exceptions' + +describe Chef::Provider::Ifconfig::Debian do + before do + @node = Chef::Node.new + @cookbook_collection = Chef::CookbookCollection.new([]) + @events = Chef::EventDispatch::Dispatcher.new + @run_context = Chef::RunContext.new(@node, @cookbook_collection, @events) + #This new_resource can be called anything --> it is not the same as in ifconfig.rb + @new_resource = Chef::Resource::Ifconfig.new("10.0.0.1", @run_context) + @new_resource.mask "255.255.254.0" + @new_resource.metric "1" + @new_resource.mtu "1500" + @new_resource.device "eth0" + @provider = Chef::Provider::Ifconfig::Debian.new(@new_resource, @run_context) + @current_resource = Chef::Resource::Ifconfig.new("10.0.0.1", @run_context) + + status = mock("Status", :exitstatus => 0) + @provider.instance_variable_set("@status", status) + @provider.current_resource = @current_resource + end + + describe "generate_config for action_add" do + + it "should write network-script" do + @provider.stub!(:load_current_resource) + @provider.stub!(:run_command) + config_filename_ifaces = "/etc/network/interfaces" + config_filename_ifcfg = "/etc/network/interfaces.d/ifcfg-#{@new_resource.device}" + config_file_ifaces = StringIO.new + config_file_ifcfg = StringIO.new + File.should_receive(:directory?).with(File.dirname(config_filename_ifcfg)).and_return(true) + FileUtils.should_receive(:cp) + File.should_receive(:new).with(config_filename_ifaces).and_return(StringIO.new) + File.should_receive(:open).with(config_filename_ifaces, "w").and_yield(config_file_ifaces) + File.should_receive(:new).with(config_filename_ifcfg, "w").and_return(config_file_ifcfg) + + @provider.run_action(:add) + config_file_ifaces.string.should match(/^\s*source\s+interfaces[.]d\/[*]\s*$/) + config_file_ifcfg.string.should match(/^iface eth0 inet static\s*$/) + config_file_ifcfg.string.should match(/^\s+address 10\.0\.0\.1\s*$/) + config_file_ifcfg.string.should match(/^\s+netmask 255\.255\.254\.0\s*$/) + end + end + + describe "delete_config for action_delete" do + + it "should delete network-script if it exists" do + @current_resource.device "eth0" + @provider.stub!(:load_current_resource) + @provider.stub!(:run_command) + config_filename = "/etc/network/interfaces.d/ifcfg-#{@new_resource.device}" + File.should_receive(:exist?).with(config_filename).and_return(true) + FileUtils.should_receive(:rm_f).with(config_filename, :verbose => false) + + @provider.run_action(:delete) + end + end +end |