summaryrefslogtreecommitdiffstats
path: root/spec/unit
diff options
context:
space:
mode:
authorNigel Kersten <nigelk@google.com>2008-11-25 08:32:46 -0800
committerJames Turnbull <james@lovedthanlost.net>2008-11-26 13:02:53 +1100
commitd978668c03f42ce314245c23b06179f6a62f3d67 (patch)
treeba18a5fd7854e2fbe7d3220d072cba06ede991c3 /spec/unit
parent86ce934270992d192a1163d211761a505d5b2812 (diff)
downloadpuppet-d978668c03f42ce314245c23b06179f6a62f3d67.tar.gz
puppet-d978668c03f42ce314245c23b06179f6a62f3d67.tar.xz
puppet-d978668c03f42ce314245c23b06179f6a62f3d67.zip
Lots of DirectoryService work. New Computer Type. Users now use password hashes. Groups now support setting members as attributes of the group for OS X.
Diffstat (limited to 'spec/unit')
-rwxr-xr-xspec/unit/type/computer.rb86
1 files changed, 86 insertions, 0 deletions
diff --git a/spec/unit/type/computer.rb b/spec/unit/type/computer.rb
new file mode 100755
index 000000000..ec3c797b9
--- /dev/null
+++ b/spec/unit/type/computer.rb
@@ -0,0 +1,86 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../spec_helper'
+
+require 'puppet/type/computer'
+
+computer = Puppet::Type.type(:computer)
+
+describe Puppet.type(:computer), " when checking computer objects" do
+ before :each do
+ provider_class = Puppet::Type::Computer.provider(Puppet::Type::Computer.providers[0])
+ Puppet::Type::Computer.expects(:defaultprovider).returns provider_class
+ @resource = Puppet::Type::Computer.create(
+ :name => "puppetcomputertest",
+ :en_address => "aa:bb:cc:dd:ee:ff",
+ :ip_address => "1.2.3.4")
+ @properties = {}
+ @ensure = Puppet::Type::Computer.attrclass(:ensure).new(:resource => @resource)
+ end
+
+ after :each do
+ computer.clear
+ provider_class = nil
+ Puppet::Type::Computer.provider(nil)
+ end
+
+ it "should be able to create a instance" do
+ provider_class = Puppet::Type::Computer.provider(Puppet::Type::Computer.providers[0])
+ Puppet::Type::Computer.expects(:defaultprovider).returns provider_class
+ computer.create(:name => "bar").should_not be_nil
+ end
+
+ properties = [:en_address, :ip_address]
+ params = [:name]
+
+ properties.each do |property|
+ it "should have a %s property" % property do
+ computer.attrclass(property).ancestors.should be_include(Puppet::Property)
+ end
+
+ it "should have documentation for its %s property" % property do
+ computer.attrclass(property).doc.should be_instance_of(String)
+ end
+
+ it "should accept :absent as a value" do
+ prop = computer.attrclass(property).new(:resource => @resource)
+ prop.should = :absent
+ prop.should.must == :absent
+ end
+ end
+
+ params.each do |param|
+ it "should have a %s parameter" % param do
+ computer.attrclass(param).ancestors.should be_include(Puppet::Parameter)
+ end
+
+ it "should have documentation for its %s parameter" % param do
+ computer.attrclass(param).doc.should be_instance_of(String)
+ end
+ end
+
+ describe "default values" do
+ before do
+ provider_class = computer.provider(computer.providers[0])
+ computer.expects(:defaultprovider).returns provider_class
+ end
+
+ it "should be nil for en_address" do
+ computer.create(:name => :en_address)[:en_address].should == nil
+ end
+
+ it "should be nil for ip_address" do
+ computer.create(:name => :ip_address)[:ip_address].should == nil
+ end
+ end
+
+ describe "when managing the ensure property" do
+ it "should support a :present value" do
+ lambda { @ensure.should = :present }.should_not raise_error
+ end
+
+ it "should support an :absent value" do
+ lambda { @ensure.should = :absent }.should_not raise_error
+ end
+ end
+end \ No newline at end of file