]> review.fuel-infra Code Review - puppet-modules/puppetlabs-firewall.git/commitdiff
Add unit test for ip6tables provider against version 1.3.10
authorTravis Fields <travis@puppetlabs.com>
Fri, 23 Jan 2015 21:23:02 +0000 (13:23 -0800)
committerMorgan Haskel <morgan@puppetlabs.com>
Mon, 26 Jan 2015 17:48:58 +0000 (09:48 -0800)
spec/unit/puppet/provider/ip6tables_spec.rb [new file with mode: 0644]

diff --git a/spec/unit/puppet/provider/ip6tables_spec.rb b/spec/unit/puppet/provider/ip6tables_spec.rb
new file mode 100644 (file)
index 0000000..058c90b
--- /dev/null
@@ -0,0 +1,61 @@
+#!/usr/bin/env rspec
+
+require 'spec_helper'
+if Puppet.version < '3.4.0'
+  require 'puppet/provider/confine/exists'
+else
+  require 'puppet/confine/exists'
+end
+provider_class = Puppet::Type.type(:firewall).provider(:ip6tables)
+describe 'ip6tables' do
+  let(:params) { {:name => '000 test foo', :action => 'accept'} }
+  let(:provider) { provider_class }
+  let(:resource) { Puppet::Type.type(:firewall) }
+  let(:ip6tables_version) { '1.4.0' }
+
+  before :each do
+
+  end
+
+  def stub_iptables
+    allow(Puppet::Type::Firewall).to receive(:defaultprovider).and_return provider
+    # Stub confine facts
+    allow(provider).to receive(:command).with(:iptables_save).and_return "/sbin/iptables-save"
+
+    allow(Facter.fact(:kernel)).to receive(:value).and_return('Linux')
+    allow(Facter.fact(:operatingsystem)).to receive(:value).and_return('Debian')
+    allow(Facter.fact('ip6tables_version')).to receive(:value).and_return(ip6tables_version)
+    allow(Puppet::Util::Execution).to receive(:execute).and_return ""
+    allow(Puppet::Util).to receive(:which).with("iptables-save").
+                               and_return "/sbin/iptables-save"
+  end
+
+  shared_examples 'raise error' do
+    it {
+      stub_iptables
+      expect {
+        provider.new(resource.new(params))
+      }.to raise_error(Puppet::DevError, error_message)
+    }
+  end
+  shared_examples 'run' do
+    it {
+      stub_iptables
+      provider.new(resource.new(params))
+    }
+  end
+  context 'iptables 1.3' do
+    let(:params) { {:name => '000 test foo', :action => 'accept'} }
+    let(:error_message) { /The ip6tables provider is not supported on version 1\.3 of iptables/ }
+    let(:ip6tables_version) { '1.3.10' }
+    it_should_behave_like 'raise error'
+  end
+  context 'ip6tables nil' do
+    let(:params) { {:name => '000 test foo', :action => 'accept'} }
+    let(:error_message) { /The ip6tables provider is not supported on version 1\.3 of iptables/ }
+    let(:ip6tables_version) { nil }
+    it_should_behave_like 'run'
+  end
+
+
+end