From 3e1a5d77cdf21deff0a73228c5c28366c808ad3b Mon Sep 17 00:00:00 2001
From: Ken Barber <ken@bob.sh>
Date: Sun, 18 Sep 2011 02:54:45 +0100
Subject: [PATCH] (#9576) Stub provider so it works properly outside of Linux.

---
 spec/{ => unit}/provider/iptables_prov_spec.rb | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)
 rename spec/{ => unit}/provider/iptables_prov_spec.rb (51%)

diff --git a/spec/provider/iptables_prov_spec.rb b/spec/unit/provider/iptables_prov_spec.rb
similarity index 51%
rename from spec/provider/iptables_prov_spec.rb
rename to spec/unit/provider/iptables_prov_spec.rb
index 30bc02a..3b32132 100644
--- a/spec/provider/iptables_prov_spec.rb
+++ b/spec/unit/provider/iptables_prov_spec.rb
@@ -2,8 +2,10 @@ require 'spec_helper'
 
 describe 'iptables provider' do
   before :each do
-    setup_provider(:firewall, :iptables)
-    setup_resource(:firewall, {
+    @provider = Puppet::Type.type(:firewall).provider(:iptables)
+    Puppet::Type::Firewall.stubs(:defaultprovider).returns @provider
+    @provider.stubs(:command).with(:iptables_save).returns "/sbin/iptables-save"
+    @resource = Puppet::Type.type(:firewall).new({
       :name  => '000 test foo',
       :chain => 'INPUT',
       :jump  => 'ACCEPT'
@@ -11,6 +13,9 @@ describe 'iptables provider' do
   end
   
   it 'should be able to get a list of existing rules' do
+    # Pretend to return nil from iptables
+    @provider.expects(:execute).with(['/sbin/iptables-save']).returns("")
+
     @provider.instances.each do |rule|
       rule.should be_instance_of(@provider)
       rule.properties[:provider].to_s.should == @provider.name.to_s
@@ -19,16 +24,16 @@ describe 'iptables provider' do
 
   describe 'when converting rules to resources' do
     before :each do
-      @resource = @provider.rule_to_hash('-A INPUT -p tcp -m multiport --dports 7061,7062 -m comment --comment "000 allow foo" -j ACCEPT', 'filter', 0)
+      @resource = @provider.rule_to_hash('-A INPUT -s 1.1.1.1 -d 1.1.1.1 -p tcp -m multiport --dports 7061,7062 -m multiport --sports 7061,7062 -m comment --comment "000 allow foo" -j ACCEPT', 'filter', 0)
     end
 
-    [:name, :table, :chain, :proto, :jump].each do |param|
+    [:name, :table, :chain, :proto, :jump, :source, :destination].each do |param|
       it "#{param} should be a string" do
         @resource[param].class.should == String
       end
     end
 
-    [:dport, :sport, :source, :destination].each do |param|
+    [:dport, :sport].each do |param|
       it "#{param} should be an array" do
         @resource[param].class.should == Array
       end
@@ -37,7 +42,8 @@ describe 'iptables provider' do
 
   describe 'when modifying resources' do
     before :each do
-      setup_instance(@provider, @resource)
+      @instance = @provider.new(@resource)
+      @provider.expects(:execute).with(['/sbin/iptables-save']).returns("")
     end
 
     it 'should do something' do
-- 
2.45.2