From 350a018958865d68b503b7ee62d60cd2704a41a0 Mon Sep 17 00:00:00 2001 From: Dan Bode Date: Mon, 11 Oct 2010 08:31:37 -0700 Subject: [PATCH] modified unit tests. --- spec/lib/helpers.rb | 7 ++ spec/unit/provider/sudoers/parsed_spec.rb | 72 +++++++++++++ spec/unit/provider/sudoers/sudoers.spec | 55 ---------- spec/unit/puppet/provider/ec2/ec2.rb | 40 ------- spec/unit/puppet/type/ec2.rb | 125 ---------------------- spec/unit/puppet/util/ec2.rb | 34 ------ tests/sudoers/sudoers-fakenamevar.pp | 13 +++ tests/sudoers/test2.pp | 5 +- 8 files changed, 96 insertions(+), 255 deletions(-) create mode 100644 spec/unit/provider/sudoers/parsed_spec.rb delete mode 100644 spec/unit/provider/sudoers/sudoers.spec delete mode 100644 spec/unit/puppet/provider/ec2/ec2.rb delete mode 100644 spec/unit/puppet/type/ec2.rb delete mode 100644 spec/unit/puppet/util/ec2.rb create mode 100644 tests/sudoers/sudoers-fakenamevar.pp diff --git a/spec/lib/helpers.rb b/spec/lib/helpers.rb index ca061d0..bb2fecf 100644 --- a/spec/lib/helpers.rb +++ b/spec/lib/helpers.rb @@ -103,3 +103,10 @@ def fixture(name, ext = '.txt') end end +#Spec::Example::ExampleGroupFactory.register(:provider, ProviderExampleGroup) +# +# Outside wrapper to lookup a provider and start the spec using ProviderExampleGroup +#def describe_provider(type_name, provider_name, options = {}, &block) +# provider_class = Puppet::Type.type(type_name).provider(provider_name) +# describe(provider_class, options.merge(:type => :provider), &block) +#end diff --git a/spec/unit/provider/sudoers/parsed_spec.rb b/spec/unit/provider/sudoers/parsed_spec.rb new file mode 100644 index 0000000..3cf001c --- /dev/null +++ b/spec/unit/provider/sudoers/parsed_spec.rb @@ -0,0 +1,72 @@ +require 'pathname'; Pathname.new(__FILE__).realpath.ascend { |x| begin; require (x + 'spec_helper.rb'); break; rescue LoadError; end } + +#describe_provider :sudoers, :parsed, :resource => {:path => '/tmp/vcsrepo'} do +describe Puppet::Type.type(:sudoers).provider(:parsed) do + before(:each) do + @provider = Puppet::Type.type(:sudoers).provider(:parsed) + end + it 'should not be null' do + @provider.should_not be_nil + end + + describe 'setup' do + it 'should fail if visudo is not in path' do + ENV['PATH']='' + @provider = Puppet::Type.type(:sudoers).provider(:parsed) + end + it 'should work if visudo is in path' do + end + end + +# context "parsing lines" do +# context "should ignore empty lines" do +# +# end +# context "should ignore comment lines" do +# +# end +# context "parsing invalid lines" do +# +# end +# context "parsing alias lines" do +# +# end +# context "parsing user spec lines" do +# context "prefetch comment NAMEVAR lines for user spec" +# end +# end +# context "parsing defaults lines" do +# +# end +# end +# +# context "dissallow type changes" do +# # not sure if this requires a type +# end +# +# +# context "Writing lines" do +# context "write comment lines" do +# +# end +# context "write blank lines" do +# +# end +# context "write user alias lines" do +# +# end +# context "write user spec lines" do +# +# end +# context "write defaults lines" do +# +# end +# context "fail for invalid types" do +# +# end +# context "fail for invalid lines" do +# +# end +# end +end + diff --git a/spec/unit/provider/sudoers/sudoers.spec b/spec/unit/provider/sudoers/sudoers.spec deleted file mode 100644 index 1d94c8e..0000000 --- a/spec/unit/provider/sudoers/sudoers.spec +++ /dev/null @@ -1,55 +0,0 @@ -describe_provider :vcsrepo, :git, :resource => {:path => '/tmp/vcsrepo'} do - - context "parsing lines" do - context "should ignore empty lines" do - - end - context "should ignore comment lines" do - - end - context "parsing invalid lines" do - - end - context "parsing alias lines" do - - end - context "parsing user spec lines" do - context "prefetch comment NAMEVAR lines for user spec" - end - end - context "parsing defaults lines" - - end - end - - context "dissallow type changes" do - # not sure if this requires a type - end - - - context "Writing lines" do - context "write comment lines" do - - end - context "write blank lines" do - - end - context "write user alias lines" do - - end - context "write user spec lines" do - - end - context "write defaults lines" do - - end - context "fail for invalid types" do - - end - context "fail for invalid lines" do - - end - end - -end - diff --git a/spec/unit/puppet/provider/ec2/ec2.rb b/spec/unit/puppet/provider/ec2/ec2.rb deleted file mode 100644 index 1846147..0000000 --- a/spec/unit/puppet/provider/ec2/ec2.rb +++ /dev/null @@ -1,40 +0,0 @@ -Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") } - -provider_class = Puppet::Type.type(:ec2).provider(:ec2) - -describe provider_class do - before do - @resource = stub("resource") - @provider = provider_class.new(@resource) - end - -# it "should not be suitable if the 'aws' libraries are missing" do -# Puppet.features.expects(:aws?).returns false -# provider_class.should_not be_suitable -# end - -# it "should be suitable if the 'aws' libraries are present" do -# Puppet.features.expects(:aws?).returns true -# provider_class.should be_suitable -# end - -# it "should be present if provided an 'ensure' value of 'present'" do -# provider_class.new(:ensure => :present).should be_exists -# end -# -# it "should be absent if provided an 'ensure' value of 'absent'" do -# provider_class.new(:ensure => :absent).should_not be_exists -# end -# -# it "should be absent if not provided an 'ensure' value" do -# provider_class.new({}).should_not be_exists -# end -# -# it "should be absent if provided with a resource rather than an 'ensure' value" do -# provider_class.new(@resource).should_not be_exists -# end - -# it "should accept an instance_id at initialization" do -# provider_class.new(:instance_id => 50).instance_id.should == 50 -# end -end diff --git a/spec/unit/puppet/type/ec2.rb b/spec/unit/puppet/type/ec2.rb deleted file mode 100644 index ce3d51c..0000000 --- a/spec/unit/puppet/type/ec2.rb +++ /dev/null @@ -1,125 +0,0 @@ -Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") } - -describe Puppet::Type.type(:ec2) do - before do - @type = Puppet::Type.type(:ec2) - stub_default_provider! - @valid_types = [ - 'm1.small', 'm1.large', 'm1.xlarge', - 'm2.xlarge', 'm2.2xlarge', 'm2.4xlarge', - 'c1.medium', 'c1.xlarge' - ] - @valid_params = { - :name => :name, - :ensure => :present, - :user => 'user', - :password => 'password', - :image => 'image', - :desc => 'description' - - } - end - - it "should exist" do - @type.should_not be_nil - end - - describe "the name parameter" do - it "should exist" do - @type.attrclass(:name).should_not be_nil - end - it 'values should be prefixed with PUPPET_' do - with(valid_params)[:name].should == "PUPPET_#{valid_params[:name]}" - end - it 'should be required' do - specifying(valid_params_without(:name)).should raise_error(Puppet::Error) - end - end - - describe "the user parameter" do - it "should exist" do - @type.attrclass(:user).should_not be_nil - end - it 'should support setting a value' do - with(valid_params)[:user].should == valid_params[:user] - end - # I think isrequired is broken - it 'should be required' do - specifying(valid_params_without(:user)).should raise_error(Puppet::Error) - end - end - - describe "the password parameter" do - it "should exist" do - @type.attrclass(:password).should_not be_nil - end - it 'should support setting a value' do - with(valid_params)[:password].should == valid_params[:password] - end - it 'should be required' do - specifying(valid_params_without(:password)).should raise_error(Puppet::Error) - end - end - - describe "the image parameter" do - it "should exist" do - @type.attrclass(:image).should_not be_nil - end - it 'should be required' do - specifying(valid_params_without(:image)).should raise_error(Puppet::Error) - end - it 'should support setting a value' do - with(valid_params)[:image].should == valid_params[:image] - end - end - - describe "the desc parameter" do - it "should exist" do - @type.attrclass(:desc).should_not be_nil - end - it 'should not be required' do - specifying(valid_params_without(:desc)).should_not raise_error(Puppet::Error) - end - it 'should accept a value' do - with(valid_params)[:desc].should == 'description' - end - end - - describe 'the type parameter' do - it 'should exist' do - @type.attrclass(:type).should_not be_nil - end - it 'should accept valid ec2 types' do - @valid_types.each do |t| - with(valid_params_with({:type => t}))[:type].should == t - end - end - it 'should not accept invalid types' do - specifying(:type => 'm1.freakin-huge').should raise_error(Puppet::Error) - end - it 'should default to m1.small' do - with(valid_params_without(:type)) do |resource| - resource[:type].should == 'm1.small' - end - end - end - describe "when specifying the 'ensure' parameter" do - it "should exist" do - @type.attrclass(:ensure).should_not be_nil - end - it "should support 'present' as a value" do - with(valid_params_with({:ensure => :present}))[:ensure].should == :present - end - it "should support 'absent' as a value" do - with(valid_params.merge(:ensure => :absent)) do |resource| - resource[:ensure].should == :absent - end - end - it "should not support other values" do - specifying(valid_params.merge(:ensure => :foobar)).should raise_error(Puppet::Error) - end - it 'should not be required' do - specifying(valid_params_without(:ensure)).should_not raise_error(Puppet::Error) - end - end -end diff --git a/spec/unit/puppet/util/ec2.rb b/spec/unit/puppet/util/ec2.rb deleted file mode 100644 index c8757ee..0000000 --- a/spec/unit/puppet/util/ec2.rb +++ /dev/null @@ -1,34 +0,0 @@ -Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") } - -require 'puppet/util/ec2' - -class Ec2Helper - include Puppet::Util::Ec2 -end - -# LAK: This way the constants exist, but I expect we'll regret this -unless Puppet.features.aws? - class AWS - class EC2 - class Base - end - end - end -end - -describe Puppet::Util::Ec2 do - before do - @helper = Ec2Helper.new - end - - it "should use AWS::Base to create an EC2 connection" do - AWS::EC2::Base.expects(:new).with(:access_key_id => "myuser", :secret_access_key => "mypass") - @helper.ec2_connection("myuser", "mypass") - end - - it "should call foo and bar when calling baz" do - @helper.stubs(:foo).returns "yay" - @helper.expects(:bar).with("yay").returns "yip" - @helper.baz.should == "yip" - end -end diff --git a/tests/sudoers/sudoers-fakenamevar.pp b/tests/sudoers/sudoers-fakenamevar.pp new file mode 100644 index 0000000..6208a17 --- /dev/null +++ b/tests/sudoers/sudoers-fakenamevar.pp @@ -0,0 +1,13 @@ +resources { 'sudoers': + purge => true, +} +sudoers{'fake_namevar_23': + ensure => present, + users => ['dan1', 'dan2'], + hosts => 'ALL', + commands => [ + '(root) /usr/bin/su - easapp', + '(easapp)/usr/local/eas-ts/bin/appctl', + ], + type => 'user_spec', +} diff --git a/tests/sudoers/test2.pp b/tests/sudoers/test2.pp index 63c6714..6a095c5 100644 --- a/tests/sudoers/test2.pp +++ b/tests/sudoers/test2.pp @@ -7,14 +7,17 @@ '(easapp)/usr/local/eas-ts/bin/appctl', ], type => 'user_spec', + target => '/tmp/sudoers.test', } sudoers{'ALIAS_NAME': ensure => present, sudo_alias => 'Cmnd', items => ['/bin/true', '/usr/bin/su - bob'], type => 'alias', + target => '/tmp/sudoers.test', } sudoers{'Defaults@host': parameters => ['x=y', 'one=1', 'two=2'], type => 'default', - } + target => '/tmp/sudoers.test', +}